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]

Re: [bugs] csinl broken?


> 
> Honza, test-ldouble now fails in csin, if the first operand has a
> negative sign and is finite.
> 
> Do you have any ideas?
Following patch should fix it (as well as other long douible failures).
Basically abs and negation got to no-op for long doubles for memory
operands.

I am commiting it to x86_64 tree, ok for head/branch?

Sat Apr 14 11:58:14 CEST 2001  Jan Hubicka  <jh@suse.cz>
	* i386.md (abs/neg splitter): Fix calculation of sign bit for TFmodes

Index: config/i386/i386.md
===================================================================
RCS file: /home/cvs/Repository/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.52
diff -c -3 -p -r1.52 i386.md
*** config/i386/i386.md	2001/04/12 15:07:33	1.52
--- config/i386/i386.md	2001/04/14 09:53:06
***************
*** 9370,9377 ****
  {
    int size = GET_MODE_SIZE (GET_MODE (operands[1]));
  
!   /* XFmode's size is 12, but only 10 bytes are used.  */
!   if (size == 12)
      size = 10;
    operands[0] = gen_rtx_MEM (QImode, XEXP (operands[0], 0));
    operands[0] = adj_offsettable_operand (operands[0], size - 1);
--- 9370,9377 ----
  {
    int size = GET_MODE_SIZE (GET_MODE (operands[1]));
  
!   /* XFmode's size is 12, TFmode 16, but only 10 bytes are used.  */
!   if (size >= 12)
      size = 10;
    operands[0] = gen_rtx_MEM (QImode, XEXP (operands[0], 0));
    operands[0] = adj_offsettable_operand (operands[0], size - 1);
***************
*** 9641,9648 ****
  {
    int size = GET_MODE_SIZE (GET_MODE (operands[1]));
  
!   /* XFmode's size is 12, but only 10 bytes are used.  */
!   if (size == 12)
      size = 10;
    operands[0] = gen_rtx_MEM (QImode, XEXP (operands[0], 0));
    operands[0] = adj_offsettable_operand (operands[0], size - 1);
--- 9641,9648 ----
  {
    int size = GET_MODE_SIZE (GET_MODE (operands[1]));
  
!   /* XFmode's size is 12, TFmode 16, but only 10 bytes are used.  */
!   if (size >= 12)
      size = 10;
    operands[0] = gen_rtx_MEM (QImode, XEXP (operands[0], 0));
    operands[0] = adj_offsettable_operand (operands[0], size - 1);


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