Bug in double->unsigned casting on powerpc-unknown-linux-gnu

David Edelsohn dje@watson.ibm.com
Fri Nov 6 15:37:00 GMT 1998


	I have just commited the appended patch to fix this bug.  This was
on all PowerPC targets, not just Linux/GNU.

David


Fri Nov  6 16:35:10 1998  David Edelsohn  <edelsohn@mhpcc.edu>

	* rs6000.md (floatunssidf2_internal splitter): Use base register
	operand, not hard-coded SP.

Index: rs6000.md
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.29
diff -c -p -r1.29 rs6000.md
*** rs6000.md	1998/10/05 22:03:25	1.29
--- rs6000.md	1998/11/06 21:33:42
***************
*** 3704,3710 ****
  	(unsigned_float:DF (match_operand:SI 1 "gpc_reg_operand" "")))
     (use (match_operand:SI 2 "gpc_reg_operand" ""))
     (use (match_operand:DF 3 "gpc_reg_operand" ""))
!    (clobber (match_operand 4 "gpc_reg_operand" "=b"))
     (clobber (reg:DF 76))]
    "TARGET_HARD_FLOAT"
    [(set (match_dup 4)
--- 3704,3710 ----
  	(unsigned_float:DF (match_operand:SI 1 "gpc_reg_operand" "")))
     (use (match_operand:SI 2 "gpc_reg_operand" ""))
     (use (match_operand:DF 3 "gpc_reg_operand" ""))
!    (clobber (match_operand 4 "gpc_reg_operand" ""))
     (clobber (reg:DF 76))]
    "TARGET_HARD_FLOAT"
    [(set (match_dup 4)
***************
*** 3718,3724 ****
  		 (match_dup 5)] 13))	;; high word
     (set (match_dup 0)
  	(unspec [(match_dup 5)
! 		 (reg:SI 1)] 14))
     (set (match_dup 0)
  	(minus:DF (match_dup 0)
  		  (match_dup 3)))]
--- 3718,3724 ----
  		 (match_dup 5)] 13))	;; high word
     (set (match_dup 0)
  	(unspec [(match_dup 5)
! 		 (match_dup 4)] 14))
     (set (match_dup 0)
  	(minus:DF (match_dup 0)
  		  (match_dup 3)))]



More information about the Gcc-bugs mailing list