From d8c5157261ce99adf33da209c6ba73f41cb9419b Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 27 Aug 2012 16:25:12 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/mips/mips.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c1174e33aa..82c7a3580f9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-08-27 Richard Sandiford + + * config/mips/mips.c (vr4130_align_insns): Don't simulate + ghost instructions. Assert that the required instructions exist. + 2012-08-26 Richard Sandiford * 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 64e98c3fb91..b20e4ed3636 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; }