conv_int_double.c (482B)
1 /* int <-> double round-trip: SCVTF (int->double, 32-bit src) and FCVTZS 2 * (double->int). Doubles represent every 32-bit int exactly so the values are 3 * deterministic across opt levels. volatile operands defeat folding. 4 * 5 * i = 84 : d = (double)i = 84.0 (scvtf d,w) 6 * back : (int)(d/2) = 42 (fcvtzs w,d) */ 7 int test_main(void) { 8 volatile int i = 84; 9 double d = (double)i; /* scvtf d,w */ 10 int back = (int)(d / 2.0); /* 42, fcvtzs w,d */ 11 return back; 12 }