diff options
Diffstat (limited to 'gcc/config/sh/sh.c')
-rw-r--r-- | gcc/config/sh/sh.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 44e1e4c..d13198b 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -5799,7 +5799,7 @@ fixup_addr_diff_vecs (rtx first) { rtx vec_lab, pat, prev, prevpat, x, braf_label; - if (!JUMP_P (insn) + if (! JUMP_TABLE_DATA_P (insn) || GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC) continue; pat = PATTERN (insn); @@ -6233,7 +6233,7 @@ sh_reorg (void) num_mova = 0; } } - else if (JUMP_P (insn) + else if (JUMP_TABLE_DATA_P (insn) && GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC && num_mova /* ??? loop invariant motion can also move a mova out of a @@ -6496,8 +6496,7 @@ split_branches (rtx first) } else if (JUMP_P (insn) /* Don't mess with ADDR_DIFF_VEC */ - && (GET_CODE (PATTERN (insn)) == SET - || GET_CODE (PATTERN (insn)) == RETURN)) + && ! JUMP_TABLE_DATA_P (insn)) { enum attr_type type = get_attr_type (insn); if (type == TYPE_CBRANCH) |