Commit 59ec66dc by Mark Mitchell Committed by Mark Mitchell

rtl.h (init_virtual_regs): New function.

	* 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
parent a5f42165
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:
......
......@@ -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. */
......
......@@ -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. */
......
......@@ -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
......
// Build don't link:
// Special g++ Options: -O2
void f ()
{
struct Init {
Init () {
}
};
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment