From: Jim Wilson Date: Wed, 7 Aug 1996 23:02:30 +0000 (-0700) Subject: (casesi_jump): New pattern. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f1ffca1c5abf40791b999b745040e16d52a3fe71;p=gcc.git (casesi_jump): New pattern. (casesi): Generate RTL to match it. From-SVN: r12600 --- diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 91fa4583214..2371bf3bd15 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -1691,6 +1691,18 @@ "jmp @%0%#" [(set_attr "needs_delay_slot" "yes")]) +;; This might seem redundant, but it helps us distinguish case table jumps +;; which can be present in structured code from indirect jumps which can not +;; be present in structured code. This allows -fprofile-arcs to work. + +(define_insn "*casesi_jump" + [(set (pc) + (match_operand:SI 0 "arith_reg_operand" "r")) + (use (label_ref (match_operand 1 "" "")))] + "" + "jmp @%0%#" + [(set_attr "needs_delay_slot" "yes")]) + ;; Call subroutine returning any type. ;; ??? This probably doesn't work. @@ -1783,7 +1795,8 @@ (mem:HI (plus:SI (reg:SI 0) (match_dup 6))))) (set (match_dup 6) (mem:HI (plus:SI (reg:SI 0) (match_dup 6))))]) - (set (pc) (reg:SI 0))] + (parallel [(set (pc) (reg:SI 0)) + (use (label_ref (match_dup 3)))])] "" " {