re PR target/29945 (ICE in simplify_subreg with simple code in libgfortran)
authorAndrew Pinski <andrew_pinski@playstation.sony.com>
Thu, 30 Nov 2006 01:05:58 +0000 (01:05 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Thu, 30 Nov 2006 01:05:58 +0000 (17:05 -0800)
2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR target/29945
        * config/spu/spu.md  (extend_compare<mode>): New pattern.
        (extend_compare): Change to expand and use the above pattern.

2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR target/29945
        * gcc.c-torture/compile/pr29945.c: New testcase.

From-SVN: r119348

gcc/ChangeLog
gcc/config/spu/spu.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr29945.c [new file with mode: 0644]

index 8df3d86..cb38286 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR target/29945
+       * config/spu/spu.md  (extend_compare<mode>): New pattern.
+       (extend_compare): Change to expand and use the above pattern.
+       
 2006-11-29  Janis Johnson  <janis187@us.ibm.com>
 
        * config/dfp-bit.c (DFP_TO_INT): Fix rounding mode.
index 6ed9e7b..d9a0b4e 100644 (file)
@@ -2708,9 +2708,18 @@ selb\t%0,%4,%0,%3"
 
 ;; This pattern is used when the result of a compare is not large
 ;; enough to use in a selb when expanding conditional moves.
-(define_insn "extend_compare"
+(define_expand "extend_compare"
   [(set (match_operand 0 "spu_reg_operand" "=r")
        (unspec [(match_operand 1 "spu_reg_operand" "r")] UNSPEC_EXTEND_CMP))]
+  ""
+  {
+    emit_insn (gen_rtx_SET (VOIDmode, operands[0], gen_rtx_UNSPEC (GET_MODE (operands[0]),
+                              gen_rtvec (1, operands[1]), UNSPEC_EXTEND_CMP)));
+    DONE;
+  })
+(define_insn "extend_compare<mode>"
+  [(set (match_operand:ALL 0 "spu_reg_operand" "=r")
+       (unspec:ALL [(match_operand 1 "spu_reg_operand" "r")] UNSPEC_EXTEND_CMP))]
   "operands"
   "fsm\t%0,%1"
   [(set_attr "type" "shuf")])
index e147237..0de5760 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+        PR target/29945
+       * gcc.c-torture/compile/pr29945.c: New testcase.
+                       
 2006-11-30  Joseph Myers  <joseph@codesourcery.com>
 
        * gcc.dg/vect/vect.exp: Skip PowerPC targets not supporting
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr29945.c b/gcc/testsuite/gcc.c-torture/compile/pr29945.c
new file mode 100644 (file)
index 0000000..775af29
--- /dev/null
@@ -0,0 +1,8 @@
+/* This test used to ICE on the SPU target. */
+extern const char *__ctype_ptr;
+
+parse_real (unsigned char c)
+{
+  if ((__ctype_ptr[c]&04) && c != '.')
+   unget_char ( c);
+}