From 4a8d0c9c68d8ce12453255695bfab8b2111dd772 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 11 Oct 2001 11:48:42 -0700 Subject: rtl.h (REG_VTABLE_REF): New. * rtl.h (REG_VTABLE_REF): New. * rtl.c (reg_note_name): Add it. * combine.c (distribute_notes): Handle it. * final.c (final_scan_insn): Handle it. * tree.def (VTABLE_REF): New. * expr.c (expand_expr): Handle it. * varasm.c (assemble_vtable_entry, assemble_vtable_inherit): New. * output.h: Declare them. cp/ * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead of an asm statement. (build_vtbl_ref_1): Split out from build_vtbl_ref. (build_vfn_ref): Use it to handle vtable descriptors before calling build_vtable_entry_ref. * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit. testsuite/ * g++.old-deja/g++.other/crash18.C: Add -S to options. From-SVN: r46195 --- gcc/cp/decl2.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'gcc/cp/decl2.c') diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 0ab9299244e..8c5dba17507 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -2406,23 +2406,23 @@ output_vtable_inherit (vars) tree vars; { tree parent; - rtx op[2]; + rtx child_rtx, parent_rtx; - op[0] = XEXP (DECL_RTL (vars), 0); /* strip the mem ref */ + child_rtx = XEXP (DECL_RTL (vars), 0); /* strip the mem ref */ parent = binfo_for_vtable (vars); if (parent == TYPE_BINFO (DECL_CONTEXT (vars))) - op[1] = const0_rtx; + parent_rtx = const0_rtx; else if (parent) { parent = get_vtbl_decl_for_binfo (TYPE_BINFO (BINFO_TYPE (parent))); - op[1] = XEXP (DECL_RTL (parent), 0); /* strip the mem ref */ + parent_rtx = XEXP (DECL_RTL (parent), 0); /* strip the mem ref */ } else my_friendly_abort (980826); - output_asm_insn (".vtable_inherit %c0, %c1", op); + assemble_vtable_inherit (child_rtx, parent_rtx); } static int -- cgit v1.2.1