llvm-6502/lib
Jakob Stoklund Olesen 0e0a8806d4 Extend the SpillPlacement interface with two new features.
The PrefBoth constraint is used for blocks that ideally want a live-in
value both on the stack and in a register. This would be used by a block
that has a use before interference forces a spill.

Secondly, add the ChangesValue flag to BlockConstraint. This tells
SpillPlacement if a live-in value on the stack can be reused as a
live-out stack value for free. If the block redefines the virtual
register, a spill would be required for that.

This extra information will be used by SpillPlacement to more accurately
calculate spill costs when a value can exist both on the stack and in a
register.

The simplest example is a basic block that reads the virtual register,
but doesn't change its value. Spilling around such a block requires a
reload, but no spill in the block.

The spiller already knows this, but the spill placer doesn't. That can
sometimes lead to suboptimal regions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136731 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-02 21:53:03 +00:00
..
Analysis Use consistent terminology for loop exit/exiting blocks. Name change only. 2011-08-02 04:23:35 +00:00
Archive Rewrite the CMake build to use explicit dependencies between libraries, 2011-07-29 00:14:25 +00:00
AsmParser Add the 'resume' instruction for the new EH rewrite. 2011-07-31 06:30:59 +00:00
Bitcode Add the 'resume' instruction for the new EH rewrite. 2011-07-31 06:30:59 +00:00
CodeGen Extend the SpillPlacement interface with two new features. 2011-08-02 21:53:03 +00:00
CompilerDriver Build CompilerDriver library. 2011-03-12 22:01:42 +00:00
ExecutionEngine Rewrite the CMake build to use explicit dependencies between libraries, 2011-07-29 00:14:25 +00:00
Linker Rewrite the CMake build to use explicit dependencies between libraries, 2011-07-29 00:14:25 +00:00
MC Assume .cfi_startproc is the first thing in a function. If the function is 2011-08-02 20:24:22 +00:00
Object Rewrite the CMake build to use explicit dependencies between libraries, 2011-07-29 00:14:25 +00:00
Support Added several architecture names. 2011-07-30 01:29:54 +00:00
Target Don't create a ridiculous EXTRACT_ELEMENT. PR10563. 2011-08-02 18:38:35 +00:00
Transforms Move methods in PassManagerBuilder offline. 2011-08-02 21:50:27 +00:00
VMCore Remove the LLVMBuildUnwind C API function. 2011-08-02 06:20:17 +00:00
CMakeLists.txt Build CompilerDriver library. 2011-03-12 22:01:42 +00:00
Makefile