llvm-project/llvm/lib/CodeGen
Chris Lattner 7efcdb7ca3 Big change to compute logical value numbers for each LiveRange added to an
Interval.  This generalizes the isDefinedOnce mechanism that we used before
to help us coallesce ranges that overlap.  As part of this, every logical
range with a different value is assigned a different number in the interval.
For example, for code that looks like this:

0  X = ...
4  X += ...
  ...
N    = X

We now generate a live interval that contains two ranges: [2,6:0),[6,?:1)
reflecting the fact that there are two different values in the range at
different positions in the code.

Currently we are not using this information at all, so this just slows down
liveintervals.  In the future, this will change.

Note that this change also substantially refactors the joinIntervalsInMachineBB
method to merge the cases for virt-virt and phys-virt joining into a single
case, adds comments, and makes the code a bit easier to follow.

llvm-svn: 15154
2004-07-24 02:59:07 +00:00
..
InstrSched Use new macro 2004-07-16 00:04:54 +00:00
ModuloScheduling These files don't need to include <iostream> since they include "Support/Debug.h". 2004-07-21 20:50:33 +00:00
SelectionDAG Add #include <iostream> since Value.h does not #include it any more. 2004-07-04 12:19:56 +00:00
IntrinsicLowering.cpp Add #include <iostream> since Value.h does not #include it any more. 2004-07-04 12:19:56 +00:00
LiveInterval.cpp Little stuff: 2004-07-24 02:52:23 +00:00
LiveInterval.h Little stuff: 2004-07-24 02:52:23 +00:00
LiveIntervalAnalysis.cpp Big change to compute logical value numbers for each LiveRange added to an 2004-07-24 02:59:07 +00:00
LiveIntervalAnalysis.h Add a new differingRegisterClasses method 2004-07-24 02:53:43 +00:00
LiveVariables.cpp There is no need to store the MBB along with the MI any more, we can now 2004-07-19 07:04:55 +00:00
MachineBasicBlock.cpp Add #include <iostream> since Value.h does not #include it any more. 2004-07-04 12:19:56 +00:00
MachineCodeEmitter.cpp Add #include <iostream> since Value.h does not #include it any more. 2004-07-04 12:19:56 +00:00
MachineCodeForInstruction.cpp Do not find these ugly sparc-specific objects by using the annotation API on 2004-06-27 18:52:17 +00:00
MachineFunction.cpp Add viewCFG() and viewCFGOnly() APIs. 2004-07-08 00:47:58 +00:00
MachineInstr.cpp * Doxygenify comments 2004-07-09 14:45:17 +00:00
MachineInstrAnnot.cpp Move the private MachineInstrAnnot.h into a private directory. 2004-02-29 19:12:51 +00:00
Makefile Making an archive version of the CodeGen library is unnecessary if we just 2004-06-22 17:52:30 +00:00
PHIElimination.cpp Update live intervals more accurately for PHI elim. This slightly reduces 2004-07-23 05:27:43 +00:00
Passes.cpp The default has not been 'simple' for AGES! 2004-07-22 21:46:02 +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 Fix fallout from getOffsetOfLocalArea() being negated. Debugging dumps were being 2004-06-11 06:37:11 +00:00
RegAllocIterativeScan.cpp Rename LiveIntervals.(cpp|h) -> LiveIntervalAnalysis.(cpp|h) 2004-07-23 17:56:30 +00:00
RegAllocLinearScan.cpp Rename LiveIntervals.(cpp|h) -> LiveIntervalAnalysis.(cpp|h) 2004-07-23 17:56:30 +00:00
RegAllocLocal.cpp These files don't need to include <iostream> since they include "Support/Debug.h". 2004-07-21 20:50:33 +00:00
RegAllocSimple.cpp These files don't need to include <iostream> since they include "Support/Debug.h". 2004-07-21 20:50:33 +00:00
TwoAddressInstructionPass.cpp Fix indentation and wrap code at 80 cols 2004-07-22 15:26:23 +00:00
UnreachableBlockElim.cpp Fix a bug in the unreachable block elim pass. Dropping all references on a 2004-07-06 06:36:11 +00:00
VirtRegMap.cpp These files don't need to include <iostream> since they include "Support/Debug.h". 2004-07-21 20:50:33 +00:00
VirtRegMap.h Add function to clear all virtual->physical mappings but not assigned 2004-07-20 13:28:17 +00:00