volatile long double l, m, n; extern void abort (void); int main (void) { l = __builtin_copysignl (0.0L, -1.0L); m = __builtin_copysignl (0.0L, -1.0L); n = l + m; if (__builtin_copysignl (1.0L, n) >= 0.0L) abort (); return 0; }
fails on ppc*-linux with -mlong-double-128, -0.0 + -0.0 gives 0.0 rather than expected -0.0. -- Summary: __gcc_add doesn't handle -0.0L properly Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org GCC target triplet: powerpc*-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25960