/* This test case is for a FPU bug to do with lazy eflags updating that was fixed by commit 1.42 in coregrind/vg_from_ucode.c in the HEAD. Thanks to Dominic Mazzoni <dmazzoni@aig.jpl.nasa.gov for the test case and the following information: Anyway, the error only occurs if you compile it with the options: gcc -O2 -mcpu=pentiumpro -march=pentiumpro However, the exact same error occurs whether I compile the program with gcc 2.96 (RedHat 7.3's version) or gcc 3.2. The correct output of the program is "0.000000". When run under valgrind 1.9.4, it outputs "1.000000". */ #include <stdio.h> int main(int argc, char **argv) { union { float a[2]; int b[2]; } u; u.a[0] = 0.0 / 0.0; u.a[1] = ((*u.b & 0x7FC00000) != 0x7FC00000); printf("%f\n", u.a[1]); return 0; }