From 02ebfa52aa2daa4ff1063537a872303400e4b6d9 Mon Sep 17 00:00:00 2001 From: mmitchel Date: Wed, 23 Sep 1998 23:28:17 +0000 Subject: [PATCH] * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22563 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/emit-rtl.c | 18 +++++++++++++----- gcc/integrate.c | 5 +---- gcc/rtl.h | 1 + gcc/testsuite/g++.old-deja/g++.other/local2.C | 10 ++++++++++ 5 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 gcc/testsuite/g++.old-deja/g++.other/local2.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2e46e4d0e93..4a14dcc44b6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Wed Sep 23 22:32:31 1998 Mark Mitchell + + * 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 * config/arm/thumb.h: The following patches were made by Jim Wilson: diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index e5510a6dbeb..e6e0e609e54 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3297,6 +3297,18 @@ gen_sequence () return result; } +/* 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. */ diff --git a/gcc/integrate.c b/gcc/integrate.c index ad73bd52177..d3fb05bbbfc 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -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. */ diff --git a/gcc/rtl.h b/gcc/rtl.h index 8b88a7e42fd..dc432f34505 100644 --- 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 index 00000000000..2d17b33e601 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/local2.C @@ -0,0 +1,10 @@ +// Build don't link: +// Special g++ Options: -O2 + +void f () +{ + struct Init { + Init () { + } + }; +} -- 2.11.0