From f1ffca1c5abf40791b999b745040e16d52a3fe71 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Wed, 7 Aug 1996 16:02:30 -0700 Subject: [PATCH] (casesi_jump): New pattern. (casesi): Generate RTL to match it. From-SVN: r12600 --- gcc/config/sh/sh.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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)))])] "" " { -- 2.30.2