hanchenye-llvm-project/llvm/lib/CodeGen
Evan Cheng 7b2a001669 Joining a live interval of a physical register with a virtual one can turn out
to be really bad. Once they are joined they are not broken apart. Also, physical
intervals cannot be spilled!

Added a heuristic as a workaround for this. Be careful coalescing with a
physical register if the virtual register uses are "far". Check if there are
uses in the same loop as the source (copy instruction). Check if it is in the
loop preheader, etc.

llvm-svn: 35134
2007-03-17 09:27:35 +00:00
..
SelectionDAG Use SmallSet instead of std::set. 2007-03-17 08:53:30 +00:00
AsmPrinter.cpp Small eye-candy: use asciz directive everywhere, where possible. 2007-03-06 19:25:02 +00:00
BranchFolding.cpp Remove isAccessable. 2007-02-22 16:39:03 +00:00
DwarfWriter.cpp Cleanup: make SetCounter an instance variable 2007-03-07 08:25:02 +00:00
ELFWriter.cpp Generalize TargetData strings, to support more interesting forms of data. 2007-02-14 05:52:17 +00:00
ELFWriter.h Moved from include/llvm/CodeGen to lib/CodeGen. 2007-02-08 01:30:50 +00:00
IntrinsicLowering.cpp Lower eh filter intrinsic. 2007-03-01 20:24:30 +00:00
LLVMTargetMachine.cpp Now LoopStrengthReduce is a LoopPass. 2007-03-06 21:14:09 +00:00
LiveInterval.cpp Added an automatic cast to "std::ostream*" etc. from OStream. We then can 2006-12-17 05:15:13 +00:00
LiveIntervalAnalysis.cpp Joining a live interval of a physical register with a virtual one can turn out 2007-03-17 09:27:35 +00:00
LiveVariables.cpp If a virtual register is already marked alive in this block, that means it is 2007-03-09 09:48:56 +00:00
MachOWriter.cpp Remove unneeded header file. 2007-03-04 04:41:04 +00:00
MachOWriter.h More Mach-O writer improvements. 2007-02-28 07:40:50 +00:00
MachineBasicBlock.cpp Print preds / succs BB numbers. 2007-03-09 08:29:08 +00:00
MachineFunction.cpp Generalize TargetData strings, to support more interesting forms of data. 2007-02-14 05:52:17 +00:00
MachineInstr.cpp Use findRegisterUseOperand to find a kill of particular register. 2007-02-23 01:04:26 +00:00
MachineModuleInfo.cpp Collect eh filter info. 2007-03-01 20:25:32 +00:00
MachinePassRegistry.cpp Final polish on machine pass registries. 2006-08-02 12:30:23 +00:00
Makefile this will work better 2006-11-03 19:15:55 +00:00
PHIElimination.cpp rename DenseMap to IndexedMap. 2007-02-01 05:32:05 +00:00
Passes.cpp *** empty log message *** 2006-11-16 20:11:33 +00:00
PhysRegTracker.h
PrologEpilogInserter.cpp If target decides to create an emergency spill slot, make sure it's closest to SP or frame pointer. 2007-03-06 10:02:38 +00:00
RegAllocLinearScan.cpp Only add liveinterval to livein set if it isn't assigned a stack slot. 2007-02-25 09:39:02 +00:00
RegAllocLocal.cpp Use BitVector instead of vector<bool> which can be extremely slow. 2007-02-15 05:59:24 +00:00
RegAllocSimple.cpp Eliminate static ctors from Statistics 2006-12-19 22:41:21 +00:00
RegisterScavenging.cpp Minor bug fix. 2007-03-06 21:58:15 +00:00
TwoAddressInstructionPass.cpp Eliminate static ctors from Statistics 2006-12-19 22:41:21 +00:00
UnreachableBlockElim.cpp eliminate RegisterOpt. It does the same thing as RegisterPass. 2006-08-27 22:42:52 +00:00
VirtRegMap.cpp Only propagate IsKill if the last use is a kill. 2007-03-03 06:32:37 +00:00
VirtRegMap.h rename DenseMap to IndexedMap. 2007-02-01 05:32:05 +00:00