This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] Fix PR target/14201 (Alpha -mieee ICE)
- From: Falk Hueffner <falk dot hueffner at student dot uni-tuebingen dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: 20 Feb 2004 19:33:55 +0100
- Subject: [patch] Fix PR target/14201 (Alpha -mieee ICE)
This is caused by a typo in alpha.md introduced in this patch:
http://gcc.gnu.org/ml/gcc-patches/2003-10/msg01610.html
Tested on mainline alphaev68-linux. OK for mainline and 3.4?
BTW, is there some DejaGNU magic which will run the test case both
with and without -mieee?
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 Falk Hueffner <falk@debian.org>
PR target/14201
* gcc.c-torture/compile/fix-trunc-mem-1.c: New test.
Index: alpha.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.md,v
retrieving revision 1.218
diff -u -p -u -3 -0 -r1.218 alpha.md
--- alpha.md 31 Jan 2004 02:06:51 -0000 1.218
+++ alpha.md 20 Feb 2004 13:09:55 -0000
@@ -2376,20 +2376,20 @@
(define_insn_and_split "*fix_truncsfsi_ieee"
[(set (match_operand:SI 0 "memory_operand" "=m")
(subreg:SI
(match_operator:DI 4 "fix_operator"
[(float_extend:DF
(match_operand:SF 1 "reg_or_0_operand" "fG"))]) 0))
(clobber (match_scratch:DI 2 "=&f"))
(clobber (match_scratch:SF 3 "=&f"))]
"TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
"#"
"&& 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")])
/* 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; }
--
Falk