From: Ulrich Weigand Date: Wed, 3 Apr 2013 12:14:03 +0000 (+0000) Subject: * config/spu/spu.c (emit_nop_for_insn): Handle JUMP_TABLE_DATA. X-Git-Tag: releases/gcc-4.9.0~6698 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b3d45ff04060a94039d12d6ca01938f190e7287f;p=thirdparty%2Fgcc.git * config/spu/spu.c (emit_nop_for_insn): Handle JUMP_TABLE_DATA. From-SVN: r197406 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0bf68ccbbd12..a9120a42c3e9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-04-03 Ulrich Weigand + + * config/spu/spu.c (emit_nop_for_insn): Handle JUMP_TABLE_DATA. + 2013-04-03 Bin Cheng * rtl.h (AUTO_INC_DEC): Fix typo of HAVE_POST_MODIFY_DISP. diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index 31d31f928a6b..6cbd3f82337f 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -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);