rtl.h (init_virtual_regs): New function.
authorMark Mitchell <mark@markmitchell.com>
Wed, 23 Sep 1998 23:28:17 +0000 (23:28 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 23 Sep 1998 23:28:17 +0000 (23:28 +0000)
* rtl.h (init_virtual_regs): New function.
* emit-rtl.c (init_virtual_regs): Define.
(insn_emit): Use it.
* integrate.c (save_for_inline_copying): Likewise.

From-SVN: r22563

gcc/ChangeLog
gcc/emit-rtl.c
gcc/integrate.c
gcc/rtl.h
gcc/testsuite/g++.old-deja/g++.other/local2.C [new file with mode: 0644]

index 2e46e4d0e93c3b326eb9ca17ee8730865493244b..4a14dcc44b6f5ca249bb40c1c40d30d6aa87bb67 100644 (file)
@@ -1,3 +1,10 @@
+Wed Sep 23 22:32:31 1998  Mark Mitchell  <mark@markmitchell.com>
+
+       * rtl.h (init_virtual_regs): New function.
+       * emit-rtl.c (init_virtual_regs): Define.
+       (insn_emit): Use it.
+       * integrate.c (save_for_inline_copying): Likewise.
+
 Wed Sep 23 16:22:01 1998  Nick Clifton  <nickc@cygnus.com>
 
        * config/arm/thumb.h: The following patches were made by Jim Wilson:
index e5510a6dbebdcede123635af4acbe76d0626a16d..e6e0e609e54e9720463bca997f10dd87c00aab7f 100644 (file)
@@ -3297,6 +3297,18 @@ gen_sequence ()
   return result;
 }
 \f
+/* Put the various virtual registers into REGNO_REG_RTX.  */
+
+void
+init_virtual_regs ()
+{
+  regno_reg_rtx[VIRTUAL_INCOMING_ARGS_REGNUM] = virtual_incoming_args_rtx;
+  regno_reg_rtx[VIRTUAL_STACK_VARS_REGNUM] = virtual_stack_vars_rtx;
+  regno_reg_rtx[VIRTUAL_STACK_DYNAMIC_REGNUM] = virtual_stack_dynamic_rtx;
+  regno_reg_rtx[VIRTUAL_OUTGOING_ARGS_REGNUM] = virtual_outgoing_args_rtx;
+  regno_reg_rtx[VIRTUAL_CFA_REGNUM] = virtual_cfa_rtx;
+}
+
 /* Initialize data structures and variables in this file
    before generating rtl for each function.  */
 
@@ -3339,11 +3351,7 @@ init_emit ()
   bzero ((char *) regno_reg_rtx, regno_pointer_flag_length * sizeof (rtx));
 
   /* Put copies of all the virtual register rtx into regno_reg_rtx.  */
-  regno_reg_rtx[VIRTUAL_INCOMING_ARGS_REGNUM] = virtual_incoming_args_rtx;
-  regno_reg_rtx[VIRTUAL_STACK_VARS_REGNUM] = virtual_stack_vars_rtx;
-  regno_reg_rtx[VIRTUAL_STACK_DYNAMIC_REGNUM] = virtual_stack_dynamic_rtx;
-  regno_reg_rtx[VIRTUAL_OUTGOING_ARGS_REGNUM] = virtual_outgoing_args_rtx;
-  regno_reg_rtx[VIRTUAL_CFA_REGNUM] = virtual_cfa_rtx;
+  init_virtual_regs ();
 
   /* Indicate that the virtual registers and stack locations are
      all pointers.  */
index ad73bd52177c6eb7bfcbcbec63bff5b4eec8865b..d3fb05bbbfcf482ae682e601137b5927dfe98dc2 100644 (file)
@@ -561,10 +561,7 @@ save_for_inline_copying (fndecl)
   regno_reg_rtx = reg_map;
 
   /* Put copies of all the virtual register rtx into the new regno_reg_rtx.  */
-  regno_reg_rtx[VIRTUAL_INCOMING_ARGS_REGNUM] = virtual_incoming_args_rtx;
-  regno_reg_rtx[VIRTUAL_STACK_VARS_REGNUM] = virtual_stack_vars_rtx;
-  regno_reg_rtx[VIRTUAL_STACK_DYNAMIC_REGNUM] = virtual_stack_dynamic_rtx;
-  regno_reg_rtx[VIRTUAL_OUTGOING_ARGS_REGNUM] = virtual_outgoing_args_rtx;
+  init_virtual_regs ();
 
   /* Likewise each label rtx must have a unique rtx as its copy.  */
 
index 8b88a7e42fdf83499f43832e4aa0f280501a8efd..dc432f34505c0e5d1e725008bcab680d3fd61c29 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1310,6 +1310,7 @@ extern void add_insn_after                        PROTO ((rtx, rtx));
 extern void reorder_insns_with_line_notes      PROTO ((rtx, rtx, rtx));
 extern void emit_insn_after_with_line_notes    PROTO ((rtx, rtx, rtx));
 extern enum rtx_code classify_insn             PROTO ((rtx));
+extern void init_virtual_regs                   PROTO ((void));
 extern rtx emit                                        PROTO ((rtx));
 /* Query and clear/ restore no_line_numbers.  This is used by the
    switch / case handling in stmt.c to give proper line numbers in
diff --git a/gcc/testsuite/g++.old-deja/g++.other/local2.C b/gcc/testsuite/g++.old-deja/g++.other/local2.C
new file mode 100644 (file)
index 0000000..2d17b33
--- /dev/null
@@ -0,0 +1,10 @@
+// Build don't link:
+// Special g++ Options: -O2
+
+void f ()
+{
+  struct Init {
+    Init () {
+    }
+  };
+}