re PR target/32268 (Wrong comparison results for __float128 operands)
PR target/32268 * config/i386/sfp-machine.c (CMPtype): New define. (mach stubs): Use CMPtype instead of int as a return type. testsuite/ChangeLog: PR target/32268 * gcc.target/i386/pr32268.c: New test. From-SVN: r125720
This commit is contained in:
parent
97943b3c8b
commit
4962b67943
4 changed files with 49 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2007-06-14 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/32268
|
||||
* config/i386/sfp-machine.c (CMPtype): New define.
|
||||
(mach stubs): Use CMPtype instead of int as a return type.
|
||||
|
||||
2007-06-14 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
|
||||
|
|
|
@ -8,6 +8,10 @@ typedef unsigned int UTItype __attribute__((mode(TI)));
|
|||
|
||||
#define TI_BITS (__CHAR_BIT__ * (int)sizeof(TItype))
|
||||
|
||||
/* The type of the result of a floating point comparison.
|
||||
This must match `word_mode' in GCC for the target. */
|
||||
#define CMPtype long
|
||||
|
||||
#define _FP_MUL_MEAT_Q(R,X,Y) \
|
||||
_FP_MUL_MEAT_2_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
|
||||
|
||||
|
@ -129,9 +133,9 @@ struct fenv
|
|||
/* Define ALIASNAME as a strong alias for NAME. */
|
||||
#if defined __MACH__
|
||||
/* Mach-O doesn't support aliasing. If these functions ever return
|
||||
anything but int we need to revisit this... */
|
||||
anything but CMPtype we need to revisit this... */
|
||||
#define strong_alias(name, aliasname) \
|
||||
int aliasname (TFtype a, TFtype b) { return name(a, b); }
|
||||
CMPtype aliasname (TFtype a, TFtype b) { return name(a, b); }
|
||||
#else
|
||||
# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
|
||||
# define _strong_alias(name, aliasname) \
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2007-06-14 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/32268
|
||||
* gcc.target/i386/pr32268.c: New test.
|
||||
|
||||
2007-06-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gcc.dg/dfp/fe-convert-1.c: Expect FE_OVERFLOW when converting
|
||||
|
|
32
gcc/testsuite/gcc.target/i386/pr32268.c
Normal file
32
gcc/testsuite/gcc.target/i386/pr32268.c
Normal file
|
@ -0,0 +1,32 @@
|
|||
/* { dg-do run { target { { i?86-*-linux* x86_64-*-linux* } && lp64 } } } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
extern void abort(void);
|
||||
|
||||
int test_lt(__float128 x, __float128 y)
|
||||
{
|
||||
return x < y;
|
||||
}
|
||||
|
||||
int test_gt (__float128 x, __float128 y)
|
||||
{
|
||||
return x > y;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
__float128 a = 0.0;
|
||||
__float128 b = 1.0;
|
||||
|
||||
int r;
|
||||
|
||||
r = test_lt (a, b);
|
||||
if (r != ((double) a < (double) b))
|
||||
abort();
|
||||
|
||||
r = test_gt (a, b);
|
||||
if (r != ((double) a > (double) b))
|
||||
abort();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue