1
2 #include <stdlib.h>
3 #include <assert.h>
4
5 /* This should run without comment, but 3.2.1 (and presumably earlier)
6 give a false uninit-value warning. This was fixed by vex r1675
7 which is a spec rule for COPY-CondP. */
8
main(void)9 int main ( void )
10 {
11 int* x = malloc(4);
12 assert(x);
13 __asm__ __volatile__(
14 "finit\n\t"
15 "ffree %%st(0)\n\t"
16 "ffree %%st(1)\n\t"
17 "ffree %%st(2)\n\t"
18 "ffree %%st(3)\n\t"
19 "ffree %%st(4)\n\t"
20 "ffree %%st(5)\n\t"
21 "ffree %%st(6)\n\t"
22 "ffree %%st(7)\n\t"
23 "andb $128, (%0)\n\t"
24 "fldz\n\t"
25 "fldz\n\t"
26 "fucompp\n\t"
27 "fnstsw %%ax\n\t"
28 "sahf\n\t"
29 "jp .Lfoobar\n"
30 ".Lfoobar:\n\t"
31 "nop"
32 : : "r"(x) : "eax", "cc"
33 );
34 free(x);
35 return 0;
36 }
37