]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* config/spu/spu.c (emit_nop_for_insn): Handle JUMP_TABLE_DATA.
authorUlrich Weigand <uweigand@de.ibm.com>
Wed, 3 Apr 2013 12:14:03 +0000 (12:14 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Wed, 3 Apr 2013 12:14:03 +0000 (12:14 +0000)
From-SVN: r197406

gcc/ChangeLog
gcc/config/spu/spu.c

index 0bf68ccbbd12812d5f2677214c439934f8c674f8..a9120a42c3e969a4f58322b13ce5296c8e8efd1f 100644 (file)
@@ -1,3 +1,7 @@
+2013-04-03  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/spu/spu.c (emit_nop_for_insn): Handle JUMP_TABLE_DATA.
+
 2013-04-03  Bin Cheng  <bin.cheng@arm.com>
 
        * rtl.h (AUTO_INC_DEC): Fix typo of HAVE_POST_MODIFY_DISP.
index 31d31f928a6be3149bf08008fef796a2cd51ab2e..6cbd3f82337fc4719e489186a23a6f5cf9797f1f 100644 (file)
@@ -1978,13 +1978,22 @@ static struct spu_bb_info *spu_bb_info;
 /* Emit a nop for INSN such that the two will dual issue.  This assumes
    INSN is 8-byte aligned.  When INSN is inline asm we emit an lnop.
    We check for TImode to handle a MULTI1 insn which has dual issued its
-   first instruction.  get_pipe returns -1 for MULTI0, inline asm, or
-   ADDR_VEC insns. */
+   first instruction.  get_pipe returns -1 for MULTI0 or inline asm.  */
 static void
 emit_nop_for_insn (rtx insn)
 {
   int p;
   rtx new_insn;
+
+  /* We need to handle JUMP_TABLE_DATA separately.  */
+  if (JUMP_TABLE_DATA_P (insn))
+    {
+      new_insn = emit_insn_after (gen_lnop(), insn);
+      recog_memoized (new_insn);
+      INSN_LOCATION (new_insn) = UNKNOWN_LOCATION;
+      return;
+    }
+
   p = get_pipe (insn);
   if ((CALL_P (insn) || JUMP_P (insn)) && SCHED_ON_EVEN_P (insn))
     new_insn = emit_insn_after (gen_lnop (), insn);