aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/flow.c13
-rw-r--r--gcc/ssa.c1
3 files changed, 10 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5598f71..664481c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2000-04-26 Richard Henderson <rth@cygnus.com>
+ * flow.c (find_auto_inc): Use pbi->bb instead of BLOCK_FOR_INSN.
+ * ssa.c (convert_from_ssa): Don't run compute_bb_for_insn.
+
+2000-04-26 Richard Henderson <rth@cygnus.com>
+
* flow.c (propagate_one_insn): Break out from propagate_block.
(init_propagate_block_info): Likewise.
(free_propagate_block_info): Likewise.
diff --git a/gcc/flow.c b/gcc/flow.c
index dbff5de..80c51a4 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -2662,8 +2662,6 @@ verify_local_live_at_start (new_live_at_start, bb)
generates subregs of a multi-word pseudo, current life analysis will
lose the kill. So we _can_ have a pseudo go live. How irritating.
- BLOCK_FOR_INSN is assumed to be correct.
-
Including PROP_REG_INFO does not properly refresh regs_ever_live
unless the caller resets it to zero. */
@@ -4336,16 +4334,15 @@ find_auto_inc (pbi, x, insn)
Change it to q = p, ...*q..., q = q+size.
Then fall into the usual case. */
rtx insns, temp;
- basic_block bb;
start_sequence ();
emit_move_insn (q, addr);
insns = get_insns ();
end_sequence ();
- bb = BLOCK_FOR_INSN (insn);
- for (temp = insns; temp; temp = NEXT_INSN (temp))
- set_block_for_insn (temp, bb);
+ if (basic_block_for_insn)
+ for (temp = insns; temp; temp = NEXT_INSN (temp))
+ set_block_for_insn (temp, pbi->bb);
/* If we can't make the auto-inc, or can't make the
replacement into Y, exit. There's no point in making
@@ -4363,8 +4360,8 @@ find_auto_inc (pbi, x, insn)
new insn(s) and do the updates. */
emit_insns_before (insns, insn);
- if (BLOCK_FOR_INSN (insn)->head == insn)
- BLOCK_FOR_INSN (insn)->head = insns;
+ if (pbi->bb->head == insn)
+ pbi->bb->head = insns;
/* INCR will become a NOTE and INSN won't contain a
use of ADDR. If a use of ADDR was just placed in
diff --git a/gcc/ssa.c b/gcc/ssa.c
index 5ce108a..2db2d93 100644
--- a/gcc/ssa.c
+++ b/gcc/ssa.c
@@ -1811,7 +1811,6 @@ convert_from_ssa()
rtx insns = get_insns ();
/* We need up-to-date life information. */
- compute_bb_for_insn (get_max_uid ());
life_analysis (insns, NULL, PROP_KILL_DEAD_CODE | PROP_SCAN_DEAD_CODE);
/* Figure out which regs in copies and phi nodes don't conflict and