re PR target/14201 (float -> int (in mem) with -mieee causes unrecognizable insn...
authorFalk Hueffner <falk@debian.org>
Fri, 20 Feb 2004 22:13:16 +0000 (23:13 +0100)
committerFalk Hueffner <falk@gcc.gnu.org>
Fri, 20 Feb 2004 22:13:16 +0000 (23:13 +0100)
PR target/14201
* config/alpha/alpha.md (*fix_truncsfsi_ieee): Fix typoed operand
numbers.
* gcc.c-torture/compile/fix-trunc-mem-1.c: New test.

From-SVN: r78188

gcc/ChangeLog
gcc/config/alpha/alpha.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/fix-trunc-mem-1.c [new file with mode: 0644]

index cfdba5b8733abcd1dab028c47874eecc780e5623..24cf40e6e34bf798bd95d7229d482643f9381a4f 100644 (file)
@@ -1,3 +1,9 @@
+2004-02-20  Falk Hueffner  <falk@debian.org>
+
+       PR target/14201
+       * config/alpha/alpha.md (*fix_truncsfsi_ieee): Fix typoed operand
+       numbers.
+
 2004-02-20  Per Bothner  <per@bothner.com>
 
        * input.h:  Don't #include line-map.h.  It may cause link problems
index 98950aa16fa6b5447db28ad7e3cc8954b3d8fc23..998e30055aee7591b0263cd26852817d888d73b2 100644 (file)
   "&& reload_completed"
   [(set (match_dup 2) (match_op_dup 4 [(float_extend:DF (match_dup 1))]))
    (set (match_dup 3) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
-   (set (match_dup 4) (match_dup 3))]
+   (set (match_dup 5) (match_dup 3))]
 {
-  operands[4] = adjust_address (operands[0], SFmode, 0);
+  operands[5] = adjust_address (operands[0], SFmode, 0);
 }
   [(set_attr "type" "fadd")
    (set_attr "trap" "yes")])
index aacaa358c99ee526e8cf420ae1119bc4060b1dc2..1d75bac23446d2dc381b32cb9df7ea705f9bf1d9 100644 (file)
@@ -1,3 +1,8 @@
+2004-02-20  Falk Hueffner  <falk@debian.org>
+
+       PR target/14201
+       * gcc.c-torture/compile/fix-trunc-mem-1.c: New test.
+
 2004-02-20  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/13927
diff --git a/gcc/testsuite/gcc.c-torture/compile/fix-trunc-mem-1.c b/gcc/testsuite/gcc.c-torture/compile/fix-trunc-mem-1.c
new file mode 100644 (file)
index 0000000..739726d
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR target/14201  */
+/* Excercise float -> integer in memory patterns.  */
+/* { dg-options "-mieee" { target alpha*-*-* } }  */
+
+void f1 (float v,  int *p)                     { *p = v; }
+void f2 (float v,  unsigned int*p)             { *p = v; }
+void f3 (float v,  long long *p)               { *p = v; }
+void f4 (float v,  unsigned long long *p)      { *p = v; }
+void f5 (double v, int *p)                     { *p = v; }
+void f6 (double v, unsigned int *p)            { *p = v; }
+void f7 (double v, long long *p)               { *p = v; }
+void f8 (double v, unsigned long long *p)      { *p = v; }