be completely pessimistic if it is encountered during the redundant-flag-
save/restore-elimination pass. This fixes the following mysterious
failure:
insane instruction
27: PUTFL %ecx
valgrind: vg_from_ucode.c:2600 (vgPlain_emit_code): Assertion `sane' failed.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@516
continue;
}
+ /* PUTF modifies the %EFLAGS in essentially unpredictable ways.
+ For example people try to mess with bit 21 to see if CPUID
+ works. The setting may or may not actually take hold. So we
+ play safe here. */
+ if (u->opcode == PUTF) {
+ future_dead_flags = FlagsEmpty;
+ continue;
+ }
+
/* We can annul the flags written by this insn if it writes a
subset (or eq) of the set of flags known to be dead after
this insn. If not, just record the flags also written by
continue;
}
+ /* PUTF modifies the %EFLAGS in essentially unpredictable ways.
+ For example people try to mess with bit 21 to see if CPUID
+ works. The setting may or may not actually take hold. So we
+ play safe here. */
+ if (u->opcode == PUTF) {
+ future_dead_flags = FlagsEmpty;
+ continue;
+ }
+
/* We can annul the flags written by this insn if it writes a
subset (or eq) of the set of flags known to be dead after
this insn. If not, just record the flags also written by