diff options
author | Hans-Peter Nilsson <hp@bitrange.com> | 2005-01-13 01:18:58 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2005-01-13 01:18:58 +0000 |
commit | 0149f412ec522ac2257390a0033ca29941f72858 (patch) | |
tree | ed843b53e1b9e00266554ddff6c9573a92cb51ec /gcc/reload1.c | |
parent | af708001cd813070bc04a67526b308707a68b533 (diff) | |
download | gcc-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.c | 6 |
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))) |