This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]