i386's TCpuAsmOptimizer.RegReadByInstruction:
* mul doesn't read edx (unless included in operand)
* 8-bit mul and imul don't read ah (unless included in operand)
* 8-bit div and idiv don't read edx (unless included in operand)
git-svn-id: trunk@35958 -
i386's TCpuAsmOptimizer.RegReadByInstruction. Previously, the lack of this
check could generate false reads on some other register types (e.g. mmx/xmm/
flags, etc.), and this could worsen optimizations.
git-svn-id: trunk@35957 -
this removes the limit of 3 Ch_XXX flags per instruction (thus allowing adding
more precise flags, e.g. for tracking only certain bits of the flags register,
etc.) and avoids the ugliness of having the Ch_None filler, which makes
x86ins.dat less readable.
git-svn-id: trunk@35850 -
o separate information for reading and writing, because e.g. in a
try-block, only the writes to local variables and parameters are
volatile (they have to be committed immediately in case the next
instruction causes an exception)
o for now, only references to absolute memory addresses are marked
as volatile
o the volatily information is (should be) properly maintained throughout
all code generators for all archictures with this patch
o no optimizers or other compiler infrastructure uses the volatility
information yet
o this functionality is not (yet) exposed at the language level, it
is only for internal code generator use right now
git-svn-id: trunk@34996 -