aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-04-18 12:45:36 -0700
committerRichard Henderson <rth@gcc.gnu.org>2002-04-18 12:45:36 -0700
commit26406018509b6c8884453317d30e01c987fe9977 (patch)
tree31d2b2c915a75ff4c821875081d0e76d6ea6a824 /gcc
parenta3acf46d445fffc0d691bf1acb80d9a70dbd082c (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/config/ia64/ia64.md31
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)]
""