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

Reply via email to