vex r1675.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6354
EXTRA_DIST = $(noinst_SCRIPTS) \
bug133694.vgtest bug133694.stderr.exp bug133694.stdout.exp \
+ espindola2.vgtest espindola2.stderr.exp \
fpeflags.stderr.exp fpeflags.vgtest \
$(addsuffix .stderr.exp,$(INSN_TESTS)) \
$(addsuffix .stdout.exp,$(INSN_TESTS)) \
check_PROGRAMS = \
bug133694 \
+ espindola2 \
scalar_exit_group scalar_fork scalar_supp scalar_vfork \
fpeflags pushfpopf pushpopmem scalar sse_memory tronical \
more_x86_fp fprem
--- /dev/null
+
+#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;
+}
--- /dev/null
+prog: espindola2
+vgopts: -q