diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2009-11-30 07:13:21 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2009-11-30 07:13:21 +0000 |
commit | da55c6dac1184af5d8bb1dbe772574943c6146d7 (patch) | |
tree | c95150123040569bbd8625a0a8b356c4adf056b9 /gcc/reorg.c | |
parent | 360d4522c42206d15ea09f4254e4894ff3b628c2 (diff) | |
download | gcc-da55c6dac1184af5d8bb1dbe772574943c6146d7.zip gcc-da55c6dac1184af5d8bb1dbe772574943c6146d7.tar.gz gcc-da55c6dac1184af5d8bb1dbe772574943c6146d7.tar.bz2 |
re PR rtl-optimization/40086 (cris-elf gfortran.dg/forall_1.f90 -O1 execution)
PR rtl-optimization/40086
* reorg.c (relax_delay_slots): When looking for redundant insn at
the branch target, use next_real_insn, not next_active_insn.
From-SVN: r154751
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r-- | gcc/reorg.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c index 4871b0e..b1de4be 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3506,8 +3506,11 @@ relax_delay_slots (rtx first) } /* If the first insn at TARGET_LABEL is redundant with a previous - insn, redirect the jump to the following insn process again. */ - trial = next_active_insn (target_label); + insn, redirect the jump to the following insn and process again. + We use next_real_insn instead of next_active_insn so we + don't skip USE-markers, or we'll end up with incorrect + liveness info. */ + trial = next_real_insn (target_label); if (trial && GET_CODE (PATTERN (trial)) != SEQUENCE && redundant_insn (trial, insn, 0) && ! can_throw_internal (trial)) |