modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/ieee/mzero5.c (about) 1 /* Test gcse handling of IEEE 0/-0 rules. */ 2 static double zero = 0.0; 3 4 int 5 negzero_check (double d) 6 { 7 if (d == 0) 8 return !!memcmp ((void *)&zero, (void *)&d, sizeof (double)); 9 return 0; 10 } 11 12 int 13 sub (double d, double e) 14 { 15 if (d == 0.0 && e == 0.0 16 && negzero_check (d) == 0 && negzero_check (e) == 0) 17 return 1; 18 else 19 return 0; 20 } 21 22 int 23 main (void) 24 { 25 double minus_zero = -0.0; 26 if (sub (minus_zero, 0)) 27 abort (); 28 return 0; 29 }