This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/51867] GCC generates inconsistent code for same sources calling builtin calls, like sqrtf
- From: "amker.cheng at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 17 Jan 2012 10:35:14 +0000
- Subject: [Bug middle-end/51867] GCC generates inconsistent code for same sources calling builtin calls, like sqrtf
- Auto-submitted: auto-generated
- References: <bug-51867-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51867
--- Comment #3 from amker.cheng <amker.cheng at gmail dot com> 2012-01-17 10:35:14 UTC ---
test case c-c++-common/dfp/signbit-2.c depends on this check.
the case is like:
---------------------------------------------------------------------
/* { dg-options "-O0" } */
/* Check that the compiler uses builtins for signbit; if not the link
will fail because library functions are in libm. */
#include "dfp-dbg.h"
volatile _Decimal32 sd = 2.3df;
volatile _Decimal64 dd = -4.5dd;
volatile _Decimal128 tf = 5.3dl;
volatile float f = 1.2f;
volatile double d = -7.8;
volatile long double ld = 3.4L;
EXTERN int signbitf (float);
EXTERN int signbit (double);
EXTERN int signbitl (long double);
EXTERN int signbitd32 (_Decimal32);
EXTERN int signbitd64 (_Decimal64);
EXTERN int signbitd128 (_Decimal128);
int
main ()
{
if (signbitf (f) != 0) FAILURE
if (signbit (d) == 0) FAILURE
if (signbitl (ld) != 0) FAILURE
if (signbitd32 (sd) != 0) FAILURE
if (signbitd64 (dd) == 0) FAILURE
if (signbitd128 (tf) != 0) FAILURE
FINISH
}
It is compiled without optimization and will fail if no builtin_* functions are
used.
Not sure it is intended or not.