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
9int 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