#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; }