llvm-6502/lib/CodeGen
Evan Cheng 7a0d51c8e3 Fix a long-standing spiller bug:
If a spillslot value is available in a register, and there is a noop copy that
targets that register, the spiller correctly decide not to invalidate the
spillslot register.

However, even though the noop copy does not clobbers the value. It does start a
new intersecting live range. That means the spillslot register is available for
use but should not be reused for a two-address instruction modref operand which
would clobber the new live range.

When we remove the noop copy, update the available information by clearing the
canClobber bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32576 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-14 07:54:05 +00:00
..
SelectionDAG More soft-fp work. 2006-12-13 20:57:08 +00:00
AsmPrinter.cpp split up inttoptr from ptrtoint handling, the cases aren't similar at all. 2006-12-12 05:18:19 +00:00
BranchFolding.cpp Detemplatize the Statistic class. The only type it is instantiated with 2006-12-06 17:46:33 +00:00
DwarfWriter.cpp Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are 2006-12-07 01:30:32 +00:00
ELFWriter.cpp Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are 2006-12-07 01:30:32 +00:00
IntrinsicLowering.cpp This case isn't needed with recent changes to ConstantInt::get 2006-12-12 05:19:46 +00:00
LiveInterval.cpp Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are 2006-12-07 01:30:32 +00:00
LiveIntervalAnalysis.cpp Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are 2006-12-07 01:30:32 +00:00
LiveVariables.cpp Removed more <iostream> includes 2006-12-07 20:28:15 +00:00
LLVMTargetMachine.cpp Removed more <iostream> includes 2006-12-07 20:28:15 +00:00
MachineBasicBlock.cpp Removed more <iostream> includes 2006-12-07 20:28:15 +00:00
MachineDebugInfo.cpp Change inferred cast creation calls to more specific cast creations. 2006-12-12 01:17:41 +00:00
MachineFunction.cpp Removed more <iostream> includes 2006-12-07 20:28:15 +00:00
MachineInstr.cpp Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are 2006-12-07 01:30:32 +00:00
MachinePassRegistry.cpp Final polish on machine pass registries. 2006-08-02 12:30:23 +00:00
MachOWriter.cpp Properly mangles symbol table names 2006-12-11 02:20:45 +00:00
Makefile this will work better 2006-11-03 19:15:55 +00:00
Passes.cpp *** empty log message *** 2006-11-16 20:11:33 +00:00
PHIElimination.cpp Detemplatize the Statistic class. The only type it is instantiated with 2006-12-06 17:46:33 +00:00
PhysRegTracker.h Improved PhysRegTracker interface. RegAlloc lazily allocates the register tracker using a std::auto_ptr 2004-02-23 06:10:13 +00:00
PrologEpilogInserter.cpp Initialize {Min|Max}CSFrameIndex properly. 2006-12-07 02:25:34 +00:00
RegAllocLinearScan.cpp Detemplatize the Statistic class. The only type it is instantiated with 2006-12-06 17:46:33 +00:00
RegAllocLocal.cpp Removing even more <iostream> includes. 2006-12-07 20:04:42 +00:00
RegAllocSimple.cpp Move findTiedToSrcOperand to TargetInstrDescriptor. 2006-12-08 18:45:48 +00:00
TwoAddressInstructionPass.cpp Removed more <iostream> includes 2006-12-07 20:28:15 +00:00
UnreachableBlockElim.cpp eliminate RegisterOpt. It does the same thing as RegisterPass. 2006-08-27 22:42:52 +00:00
VirtRegMap.cpp Fix a long-standing spiller bug: 2006-12-14 07:54:05 +00:00
VirtRegMap.h Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are 2006-12-07 01:30:32 +00:00