diff options
author | froydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-25 11:47:13 +0000 |
---|---|---|
committer | froydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-25 11:47:13 +0000 |
commit | ca8a29451c41b17cb00251240aeed94100da9aed (patch) | |
tree | 97ed60b2eeb9bb68da40515d6c201ad4f9b71a4e /gcc/function.c | |
parent | 0b4d283eac0ef1be9c687ba775052f8d65d270f8 (diff) | |
download | gcc-ca8a29451c41b17cb00251240aeed94100da9aed.tar.gz |
PR bootstrap/4828
Revert:
2011-03-24 Nathan Froyd <froydnj@codesourcery.com>
* function.c (instantiate_virtual_regs): Use FOR_EACH_BB and
FOR_BB_INSNS_SAFE to iterate through insns. Re-indent.
(pass_instantiate_virtual_regs): Require PROP_cfglayout.
* passes.c (init_optimization_passes): Move
pass_instantiate_virtual_regs after pass_into_cfg_layout_mode.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171447 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 59 |
1 files changed, 26 insertions, 33 deletions
diff --git a/gcc/function.c b/gcc/function.c index 49404c873ff..a1ea482acad 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1883,7 +1883,7 @@ instantiate_decls (tree fndecl) static unsigned int instantiate_virtual_regs (void) { - basic_block bb; + rtx insn; /* Compute the offsets to use for this function. */ in_arg_offset = FIRST_PARM_OFFSET (current_function_decl); @@ -1901,40 +1901,33 @@ instantiate_virtual_regs (void) /* Scan through all the insns, instantiating every virtual register still present. */ - FOR_EACH_BB (bb) - { - rtx insn, curr; - - FOR_BB_INSNS_SAFE (bb, insn, curr) - { - if (INSN_P (insn)) - { - /* These patterns in the instruction stream can never be recognized. - Fortunately, they shouldn't contain virtual registers either. */ - if (GET_CODE (PATTERN (insn)) == USE - || GET_CODE (PATTERN (insn)) == CLOBBER - || GET_CODE (PATTERN (insn)) == ADDR_VEC - || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC - || GET_CODE (PATTERN (insn)) == ASM_INPUT) - continue; - else if (DEBUG_INSN_P (insn)) - for_each_rtx (&INSN_VAR_LOCATION (insn), - instantiate_virtual_regs_in_rtx, NULL); - else - instantiate_virtual_regs_in_insn (insn); + for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) + if (INSN_P (insn)) + { + /* These patterns in the instruction stream can never be recognized. + Fortunately, they shouldn't contain virtual registers either. */ + if (GET_CODE (PATTERN (insn)) == USE + || GET_CODE (PATTERN (insn)) == CLOBBER + || GET_CODE (PATTERN (insn)) == ADDR_VEC + || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC + || GET_CODE (PATTERN (insn)) == ASM_INPUT) + continue; + else if (DEBUG_INSN_P (insn)) + for_each_rtx (&INSN_VAR_LOCATION (insn), + instantiate_virtual_regs_in_rtx, NULL); + else + instantiate_virtual_regs_in_insn (insn); - if (INSN_DELETED_P (insn)) - continue; + if (INSN_DELETED_P (insn)) + continue; - for_each_rtx (®_NOTES (insn), instantiate_virtual_regs_in_rtx, NULL); + for_each_rtx (®_NOTES (insn), instantiate_virtual_regs_in_rtx, NULL); - /* Instantiate any virtual registers in CALL_INSN_FUNCTION_USAGE. */ - if (CALL_P (insn)) - for_each_rtx (&CALL_INSN_FUNCTION_USAGE (insn), - instantiate_virtual_regs_in_rtx, NULL); - } - } - } + /* Instantiate any virtual registers in CALL_INSN_FUNCTION_USAGE. */ + if (CALL_P (insn)) + for_each_rtx (&CALL_INSN_FUNCTION_USAGE (insn), + instantiate_virtual_regs_in_rtx, NULL); + } /* Instantiate the virtual registers in the DECLs for debugging purposes. */ instantiate_decls (current_function_decl); @@ -1970,7 +1963,7 @@ struct rtl_opt_pass pass_instantiate_virtual_regs = NULL, /* next */ 0, /* static_pass_number */ TV_NONE, /* tv_id */ - PROP_cfglayout, /* properties_required */ + 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ |