aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/h8300/h8300.md37
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20030821-1.c24
4 files changed, 34 insertions, 37 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0537af7..6d8de7d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-21 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR target/11805
+ * config/h8300/h8300.md (two anonymous patterns): Remove.
+
2003-08-21 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.h (MUST_PASS_IN_STACK): Remove BLKmode clause.
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 8fe7450..b17a03e 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -652,43 +652,6 @@
(match_dup 3)))]
"operands[3] = GEN_INT (INTVAL (operands[1]) - 16);")
-(define_insn ""
- [(set (cc0)
- (and:HI (match_operand:HI 0 "register_operand" "r")
- (match_operand:HI 1 "single_one_operand" "n")))]
- ""
- "*
-{
- operands[1] = GEN_INT (INTVAL (operands[1]) & 0xffff);
- if (INTVAL (operands[1]) > 128)
- {
- operands[1] = GEN_INT (INTVAL (operands[1]) >> 8);
- return \"btst\\t%V1,%t0\";
- }
- return \"btst\\t%V1,%s0\";
-}"
- [(set_attr "length" "2")
- (set_attr "cc" "set_zn")])
-
-(define_insn ""
- [(set (cc0)
- (and:SI (match_operand:SI 0 "register_operand" "r")
- (match_operand:SI 1 "single_one_operand" "n")))]
- "(TARGET_H8300H || TARGET_H8300S)
- && (INTVAL (operands[1]) & 0xffff) != 0"
- "*
-{
- operands[1] = GEN_INT (INTVAL (operands[1]) & 0xffff);
- if (INTVAL (operands[1]) > 128)
- {
- operands[1] = GEN_INT (INTVAL (operands[1]) >> 8);
- return \"btst\\t%V1,%x0\";
- }
- return \"btst\\t%V1,%w0\";
-}"
- [(set_attr "length" "2")
- (set_attr "cc" "set_zn")])
-
(define_insn "tstqi"
[(set (cc0) (match_operand:QI 0 "register_operand" "r"))]
""
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5670652..65d0308 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-21 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR target/11805
+ * gcc.c-torture/compile/20030821-1.c: New.
+
2003-08-20 Mark Mitchell <mark@codesourcery.com>
PR c++/11834
diff --git a/gcc/testsuite/gcc.c-torture/compile/20030821-1.c b/gcc/testsuite/gcc.c-torture/compile/20030821-1.c
new file mode 100644
index 0000000..34700ae
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20030821-1.c
@@ -0,0 +1,24 @@
+/* PR target/11805. */
+
+/* Consider the following sequence.
+
+ (set (cc0)
+ (and:HI (reg:HI 0)
+ (const_int 1)))
+
+ (set (pc)
+ (if_then_else (le (cc0)
+ (const_int 0))
+ (label_ref 17)
+ (pc)))
+
+ On h8300, the first insn does not set the overflow flag, but the
+ second requires the overflow flag. As a result, when the final
+ wants to output the jump insn, it cannot find a test insn that
+ gives appropriate condition flags. */
+
+unsigned char
+foo (unsigned char a)
+{
+ return (a & 1) > 0;
+}