fparith_double_neg.c (347B)
1 /* Double FNEG round-trip. volatile int input -> double, negate, negate back via 2 * subtraction so a real FNEG (double) is emitted. -(-42.0) = 42.0; 3 * (int)42.0 == 42. */ 4 int test_main(void) { 5 volatile int ia = 42; 6 double a = (double)ia; 7 double r = -a; /* FNEG: -42.0 */ 8 double s = -r; /* FNEG: 42.0 */ 9 return (int)s == 42 ? 42 : 0; 10 }