On Sep 10, 2007, at 1:48 PM, Dan Gohman wrote:
Hi Dan,
This is not safe because xor will clobber flags. It's a
miscompilation
if the user of the rematerialized value is a conditional move (e.g.
cmovne).
Thanks for spotting that!
The current fix is to X86RegisterInfo::reMaterialize()
Are you saying such a fix exists already, or that this is how a fix
should work? If the latter, I'd prefer to just revert the change to
the instructions that use xor so that they are not marked
rematerializable for now (though the ones that use pxor/xorps/xorpd
are ok).
s/current/correct
Hi Dan,
This is not safe because xor will clobber flags. It's a miscompilation
if the user of the rematerialized value is a conditional move (e.g.
cmovne).
Thanks for spotting that!
The current fix is to X86RegisterInfo::reMaterialize() should
rematerialize it as a move
Author: djg
Date: Fri Sep 7 16:32:51 2007
New Revision: 41775
URL: http://llvm.org/viewvc/llvm-project?rev=41775view=rev
Log:
Avoid storing and reloading zeros and other constants from stack slots
by flagging the associated instructions as being trivially rematerializable.
Added: