[Bug other/54330] Wrong optimization for code from fixed-bit.c

2012-08-20 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54330

--- Comment #1 from Georg-Johann Lay gjl at gcc dot gnu.org 2012-08-20 
14:11:30 UTC ---
Created attachment 28057
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=28057
fixed-bit-bug.c.150r.expand: Correct code if DI used instead of DQ/DA


[Bug other/54330] Wrong optimization for code from fixed-bit.c

2012-08-20 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54330

--- Comment #2 from Georg-Johann Lay gjl at gcc dot gnu.org 2012-08-20 
14:15:51 UTC ---
Created attachment 28058
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=28058
fixed-bit-bug.c.150r.expand: Wrong code


[Bug other/54330] Wrong optimization for code from fixed-bit.c

2012-08-20 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54330

--- Comment #3 from Georg-Johann Lay gjl at gcc dot gnu.org 2012-08-20 
14:22:46 UTC ---
FYI, there is the fixed-point configuration output from

... -E -dM | egrep '(DQ)|(DA)|([^L]LACC)|(LLFRA)' | sort

DImode (long long) is 64 bits

#define __DA_FBIT__ 32
#define __DA_IBIT__ 31
#define __DQ_FBIT__ 63
#define __DQ_IBIT__ 0
#define __LACCUM_EPSILON__ 0x1P-32LK
#define __LACCUM_FBIT__ 32
#define __LACCUM_IBIT__ 31
#define __LACCUM_MAX__ 0X7FFFP-32LK
#define __LACCUM_MIN__ (-0X1P30LK-0X1P30LK)
#define __LLFRACT_EPSILON__ 0x1P-63LLR
#define __LLFRACT_FBIT__ 63
#define __LLFRACT_IBIT__ 0
#define __LLFRACT_MAX__ 0X7FFFP-63LLR
#define __LLFRACT_MIN__ (-0.5LLR-0.5LLR)
#define __UDA_FBIT__ 32
#define __UDA_IBIT__ 32
#define __UDQ_FBIT__ 64
#define __UDQ_IBIT__ 0
#define __ULACCUM_EPSILON__ 0x1P-32ULK
#define __ULACCUM_FBIT__ 32
#define __ULACCUM_IBIT__ 32
#define __ULACCUM_MAX__ 0XP-32ULK
#define __ULACCUM_MIN__ 0.0ULK
#define __ULLFRACT_EPSILON__ 0x1P-64ULLR
#define __ULLFRACT_FBIT__ 64
#define __ULLFRACT_IBIT__ 0
#define __ULLFRACT_MAX__ 0XP-64ULLR
#define __ULLFRACT_MIN__ 0.0ULLR