aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2005-01-13 01:18:58 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2005-01-13 01:18:58 +0000
commit0149f412ec522ac2257390a0033ca29941f72858 (patch)
treeed843b53e1b9e00266554ddff6c9573a92cb51ec /gcc/reload1.c
parentaf708001cd813070bc04a67526b308707a68b533 (diff)
downloadgcc-0149f412ec522ac2257390a0033ca29941f72858.zip
gcc-0149f412ec522ac2257390a0033ca29941f72858.tar.gz
gcc-0149f412ec522ac2257390a0033ca29941f72858.tar.bz2
re PR target/18329 (mmix-knuth-mmixware testsuite failure: execute/920501-7.c, execute/comp-goto-2.c)
PR target/18329 PR target/18330 * reload1.c (delete_output_reload): Don't delete an output reload if the pseudo lives longer than a single basic block. Adjust and improve wording of comment. From-SVN: r93250
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 6402050..71c1afa 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -7624,13 +7624,13 @@ delete_output_reload (rtx insn, int j, int last_reload_reg)
/* If the pseudo-reg we are reloading is no longer referenced
anywhere between the store into it and here,
- and no jumps or labels intervene, then the value can get
- here through the reload reg alone.
+ and we're within the same basic block, then the value can only
+ pass through the reload reg and end up here.
Otherwise, give up--return. */
for (i1 = NEXT_INSN (output_reload_insn);
i1 != insn; i1 = NEXT_INSN (i1))
{
- if (LABEL_P (i1) || JUMP_P (i1))
+ if (NOTE_INSN_BASIC_BLOCK_P (i1))
return;
if ((NONJUMP_INSN_P (i1) || CALL_P (i1))
&& reg_mentioned_p (reg, PATTERN (i1)))