]> git.ipfire.org Git - thirdparty/gcc.git/commit - libgcc/libgcc2.c
re PR other/25028 (TImode-to-floating conversions broken)
authorJoseph Myers <joseph@codesourcery.com>
Thu, 15 Dec 2005 21:50:10 +0000 (21:50 +0000)
committerJoseph Myers <jsm28@gcc.gnu.org>
Thu, 15 Dec 2005 21:50:10 +0000 (21:50 +0000)
commit4a73d8657b1e02983b234533732b9dbc09c7929b
tree103ac80216ebf4fcc51f100555eacea1fd58a30f
parent4976b95c37dd8245c7565d76cfb729dc1b7f603f
re PR other/25028 (TImode-to-floating conversions broken)

PR other/25028
* libgcc2.h (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Define.
* libgcc2.c (__floatdixf, __floatundixf, __floatditf,
__floatunditf): Use #error if type sizes don't match requirements
of implementation.
(__floatdisf, __floatdidf): Unify.  Possibly use XFmode or TFmode
as wider floating-point type.  Use #error if type sizes don't
match requirements of implementation.  Avoid overflow in computing
Wtype_MAXp1_F * Wtype_MAXp1_F.  When special casing conversion,
shift one more bit.  Cast 1 to DWtype or UDWtype for shifting.
(__floatundisf, __floatundidf): Likewise.
* config/ia64/hpux.h (XF_SIZE, TF_SIZE): Define.
* config/ia64/ia64.c (ia64_init_libfuncs): Use
_U_Qfcnvfxt_quad_to_quad and _U_Qfcnvxf_quad_to_quad for
TFmode-TImode conversions.
* doc/tm.texi (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Document.

testsuite:
* gcc.dg/torture/fp-int-convert-timode.c: Only XFAIL for LP64 IA64
HP-UX.

From-SVN: r108598
gcc/ChangeLog
gcc/config/ia64/hpux.h
gcc/config/ia64/ia64.c
gcc/doc/tm.texi
gcc/libgcc2.c
gcc/libgcc2.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/fp-int-convert-timode.c