mips.md (tablejump_internal3, [...]): Tack on a `use' of the table label, so flow...
authorKen Raeburn <raeburn@cygnus.com>
Wed, 7 Oct 1998 18:23:51 +0000 (18:23 +0000)
committerKen Raeburn <raeburn@gcc.gnu.org>
Wed, 7 Oct 1998 18:23:51 +0000 (18:23 +0000)
* config/mips/mips.md (tablejump_internal3, tablejump_internal4 and matching
define_insns): Tack on a `use' of the table label, so flow analysis will
recognize a tablejump.

From-SVN: r22898

gcc/ChangeLog
gcc/config/mips/mips.md

index ce6b19a08dc782df9a4f095fb7bddf37fece2c93..fd74fa055206a3b713c64a3a98e8cf6637518806 100644 (file)
@@ -1,3 +1,9 @@
+Wed Oct  7 21:19:46 1998  Ken Raeburn  <raeburn@cygnus.com>
+
+       * config/mips/mips.md (tablejump_internal3, tablejump_internal4
+       and matching define_insns): Tack on a `use' of the table label, so
+       flow analysis will recognize a tablejump.
+
 Wed Oct  7 17:33:39 1998  Richard Henderson  <rth@cygnus.com>
 
        * gcse.c (pre_insert_insn): Tweek to notice that calls do not
index 17bd10f8288371eb64c3fb3089f90449aeb0c280..c6c187e6dc2d1d34098429f870a25c0c28f6ecfd 100644 (file)
@@ -8883,9 +8883,10 @@ move\\t%0,%z4\\n\\
    (set_attr "length"  "1")])
 
 (define_expand "tablejump_internal3"
-  [(set (pc)
-       (plus:SI (match_operand:SI 0 "register_operand" "d")
-                (label_ref:SI (match_operand:SI 1 "" ""))))]
+  [(parallel [(set (pc)
+                  (plus:SI (match_operand:SI 0 "register_operand" "d")
+                           (label_ref:SI (match_operand:SI 1 "" ""))))
+             (use (label_ref:SI (match_dup 1)))])]
   ""
   "")
 
@@ -8942,7 +8943,8 @@ move\\t%0,%z4\\n\\
 (define_insn ""
   [(set (pc)
        (plus:SI (match_operand:SI 0 "register_operand" "d")
-                (label_ref:SI (match_operand:SI 1 "" ""))))]
+                (label_ref:SI (match_operand:SI 1 "" ""))))
+   (use (label_ref:SI (match_dup 1)))]
   "!(Pmode == DImode) && next_active_insn (insn) != 0
    && GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
    && PREV_INSN (next_active_insn (insn)) == operands[1]"
@@ -8958,9 +8960,10 @@ move\\t%0,%z4\\n\\
    (set_attr "length"  "2")])
 
 (define_expand "tablejump_internal4"
-  [(set (pc)
-       (plus:DI (match_operand:DI 0 "se_register_operand" "d")
-                (label_ref:DI (match_operand:SI 1 "" ""))))]
+  [(parallel [(set (pc)
+                  (plus:DI (match_operand:DI 0 "se_register_operand" "d")
+                           (label_ref:DI (match_operand:SI 1 "" ""))))
+             (use (label_ref:DI (match_dup 1)))])]
   ""
   "")
 
@@ -8970,7 +8973,8 @@ move\\t%0,%z4\\n\\
 (define_insn ""
   [(set (pc)
        (plus:DI (match_operand:DI 0 "se_register_operand" "d")
-                (label_ref:DI (match_operand:SI 1 "" ""))))]
+                (label_ref:DI (match_operand:SI 1 "" ""))))
+   (use (label_ref:DI (match_dup 1)))]
   "Pmode == DImode && next_active_insn (insn) != 0
    && GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
    && PREV_INSN (next_active_insn (insn)) == operands[1]"