diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2012-08-27 16:25:12 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2012-08-27 16:25:12 +0000 |
commit | d8c5157261ce99adf33da209c6ba73f41cb9419b (patch) | |
tree | 6b1b9ccf7b3549cc5b163c8dbf6bae26be2b32f2 /gcc | |
parent | f3d25c6570bd19d17757fd8a592188aa7ff6ecb4 (diff) | |
download | gcc-d8c5157261ce99adf33da209c6ba73f41cb9419b.zip gcc-d8c5157261ce99adf33da209c6ba73f41cb9419b.tar.gz gcc-d8c5157261ce99adf33da209c6ba73f41cb9419b.tar.bz2 |
mips.c (vr4130_align_insns): Don't simulate ghost instructions.
gcc/
* config/mips/mips.c (vr4130_align_insns): Don't simulate
ghost instructions. Assert that the required instructions exist.
From-SVN: r190716
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c1174e..82c7a35 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-08-27 Richard Sandiford <rdsandiford@googlemail.com> + + * config/mips/mips.c (vr4130_align_insns): Don't simulate + ghost instructions. Assert that the required instructions exist. + 2012-08-26 Richard Sandiford <rdsandiford@googlemail.com> * config/mips/mips.h (AVOID_CCMODE_COPIES): Update rationale for diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 64e98c3..b20e4ed 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -15145,7 +15145,8 @@ vr4130_align_insns (void) the fly to avoid a separate instruction walk. */ vr4130_avoid_branch_rt_conflict (insn); - if (USEFUL_INSN_P (insn)) + length = get_attr_length (insn); + if (length > 0 && USEFUL_INSN_P (insn)) FOR_EACH_SUBINSN (subinsn, insn) { mips_sim_wait_insn (&state, subinsn); @@ -15180,6 +15181,7 @@ vr4130_align_insns (void) issuing at the same time as the branch. We therefore insert a nop before the branch in order to align its delay slot. */ + gcc_assert (last2); emit_insn_after (gen_nop (), last2); aligned_p = false; } @@ -15188,6 +15190,7 @@ vr4130_align_insns (void) /* SUBINSN is the delay slot of INSN, but INSN is currently unaligned. Insert a nop between LAST and INSN to align it. */ + gcc_assert (last); emit_insn_after (gen_nop (), last); aligned_p = true; } |