llvm/lib
Dan Gohman 3afda6e9d1 When the coalescer is doing rematerializing, have it remove
the copy instruction from the instruction list before asking the
target to create the new instruction. This gets the old instruction
out of the way so that it doesn't interfere with the target's
rematerialization code. In the case of x86, this helps it find
more cases where EFLAGS is not live.

Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check
to see if it reached the end of the block after scanning each
instruction, instead of just before. This lets it notice when the
end of the block is only two instructions away, without doing any
additional scanning.

These changes allow rematerialization to clobber EFLAGS in more
cases, for example using xor instead of mov to set the return value
to zero in the included testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57872 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-21 03:24:31 +00:00
..
Analysis Trim #includes. 2008-10-16 20:18:31 +00:00
Archive Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
AsmParser regenerate 2008-10-15 12:05:02 +00:00
Bitcode Rename APFloat::convertToAPInt to bitcastToAPInt to 2008-10-09 18:53:47 +00:00
CodeGen When the coalescer is doing rematerializing, have it remove 2008-10-21 03:24:31 +00:00
Debugger Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
ExecutionEngine little optimization: reuse getPointerToGlobalIfAvailable(CGV) value in emitGlobals() 2008-10-14 10:04:52 +00:00
Linker Also properly handle linking of strong alias and weak global 2008-10-15 20:10:50 +00:00
Support Fix command-line option printing to print two spaces where needed, 2008-10-14 20:25:08 +00:00
System Update the stub and callback code to handle lazy compilation. The stub 2008-10-20 21:39:23 +00:00
Target When the coalescer is doing rematerializing, have it remove 2008-10-21 03:24:31 +00:00
Transforms Use Function::getEntryBlock() instead of Function::front(), for clarity. 2008-10-21 03:10:28 +00:00
VMCore Keep track of *which* input constraint matches an output 2008-10-17 16:47:46 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00