diff options
author | Richard Henderson <rth@redhat.com> | 2002-04-18 12:45:36 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-04-18 12:45:36 -0700 |
commit | 26406018509b6c8884453317d30e01c987fe9977 (patch) | |
tree | 31d2b2c915a75ff4c821875081d0e76d6ea6a824 /gcc | |
parent | a3acf46d445fffc0d691bf1acb80d9a70dbd082c (diff) | |
download | gcc-26406018509b6c8884453317d30e01c987fe9977.zip gcc-26406018509b6c8884453317d30e01c987fe9977.tar.gz gcc-26406018509b6c8884453317d30e01c987fe9977.tar.bz2 |
* config/ia64/ia64.md (trap, conditional_trap): New.
From-SVN: r52487
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.md | 31 |
2 files changed, 35 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2676cb0..05a5f09 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2002-04-18 Richard Henderson <rth@redhat.com> + + * config/ia64/ia64.md (trap, conditional_trap): New. + 2002-04-18 Jakub Jelinek <jakub@redhat.com> PR c/6358 diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md index a7d7dca..9a2f9de7 100644 --- a/gcc/config/ia64/ia64.md +++ b/gcc/config/ia64/ia64.md @@ -5045,6 +5045,37 @@ [(set_attr "itanium_class" "stop_bit") (set_attr "predicable" "no")]) +(define_expand "trap" + [(trap_if (const_int 1) (const_int 0))] + "" + "") + +;; ??? We don't have a match-any slot type. Setting the type to unknown +;; produces worse code that setting the slot type to A. + +(define_insn "*trap" + [(trap_if (const_int 1) (match_operand 0 "const_int_operand" ""))] + "" + "break %0" + [(set_attr "itanium_class" "chk_s")]) + +(define_expand "conditional_trap" + [(trap_if (match_operand 0 "" "") (match_operand 1 "" ""))] + "" +{ + operands[0] = ia64_expand_compare (GET_CODE (operands[0]), VOIDmode); +}) + +(define_insn "*conditional_trap" + [(trap_if (match_operator 0 "predicate_operator" + [(match_operand:BI 1 "register_operand" "c") + (const_int 0)]) + (match_operand 2 "const_int_operand" ""))] + "" + "(%j0) break %2" + [(set_attr "itanium_class" "chk_s") + (set_attr "predicable" "no")]) + (define_insn "break_f" [(unspec_volatile [(const_int 0)] 3)] "" |