mips.md (tablejump_internal3, [...]): Tack on a `use' of the table label, so flow analysis will recognize a tablejump.

* 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
This commit is contained in:
Ken Raeburn 1998-10-07 18:23:51 +00:00 committed by Ken Raeburn
parent 1bba619903
commit 5924eecfbc
2 changed files with 18 additions and 8 deletions

View 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

View 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]"