#include <stdlib.h>
#include <assert.h>
/* This should run without comment, but 3.2.1 (and presumably earlier)
give a false uninit-value warning. This was fixed by vex r1675
which is a spec rule for COPY-CondP. */
int main ( void )
{
int* x = malloc(4);
assert(x);
__asm__ __volatile__(
"finit\n\t"
"ffree %%st(0)\n\t"
"ffree %%st(1)\n\t"
"ffree %%st(2)\n\t"
"ffree %%st(3)\n\t"
"ffree %%st(4)\n\t"
"ffree %%st(5)\n\t"
"ffree %%st(6)\n\t"
"ffree %%st(7)\n\t"
"andb $128, (%0)\n\t"
"fldz\n\t"
"fldz\n\t"
"fucompp\n\t"
"fnstsw %%ax\n\t"
"sahf\n\t"
"jp .Lfoobar\n"
".Lfoobar:\n\t"
"nop"
: : "r"(x) : "eax", "cc"
);
free(x);
return 0;
}