Home | History | Annotate | Download | only in x86
      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 
      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