• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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