summaryrefslogtreecommitdiff
path: root/gcc/integrate.c
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2005-05-13 16:56:11 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2005-05-13 16:56:11 +0000
commit9732dffb5cb0757535e7cb935997b1201cb13dcb (patch)
tree13100fc3273a13143ae4328a09cbb1accb1ec438 /gcc/integrate.c
parentb3582e6a89bc272c49fbb3b6f39b7854cad7ef44 (diff)
downloadgcc-9732dffb5cb0757535e7cb935997b1201cb13dcb.tar.gz
PR rtl-optimization/20769:
* bt-load.c (compute_defs_uses_and_gen): Check for the blockage pattern emitted by expand_nl_goto_receiver. PR middle-end/20793: * integrate.c (allocate_initial_values): Update register liveness information. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99668 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/integrate.c')
-rw-r--r--gcc/integrate.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 86bb875670f..3573b443b95 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -392,11 +392,23 @@ allocate_initial_values (rtx *reg_equiv_memory_loc ATTRIBUTE_UNUSED)
reg_equiv_memory_loc[regno] = x;
else
{
+ basic_block bb;
+ int new_regno;
+
gcc_assert (REG_P (x));
- reg_renumber[regno] = REGNO (x);
+ new_regno = REGNO (x);
+ reg_renumber[regno] = new_regno;
/* Poke the regno right into regno_reg_rtx so that even
fixed regs are accepted. */
- REGNO (ivs->entries[i].pseudo) = REGNO (x);
+ REGNO (ivs->entries[i].pseudo) = new_regno;
+ /* Update global register liveness information. */
+ FOR_EACH_BB (bb)
+ {
+ if (REGNO_REG_SET_P(bb->global_live_at_start, regno))
+ SET_REGNO_REG_SET (bb->global_live_at_start, new_regno);
+ if (REGNO_REG_SET_P(bb->global_live_at_end, regno))
+ SET_REGNO_REG_SET (bb->global_live_at_end, new_regno);
+ }
}
}
}