diff options
| author | Matthias Braun <matze@braunis.de> | 2015-09-22 03:44:41 +0000 |
|---|---|---|
| committer | Matthias Braun <matze@braunis.de> | 2015-09-22 03:44:41 +0000 |
| commit | d3dd1354a49c321324878269189cdff7e0e151bb (patch) | |
| tree | 8e2679c0255c036a28de407235dcfc7a271bbc77 /llvm/lib/CodeGen/SplitKit.cpp | |
| parent | 927a11e380d5c5fb1e618a6ce6bdf6c1f423e53f (diff) | |
| download | bcm5719-llvm-d3dd1354a49c321324878269189cdff7e0e151bb.tar.gz bcm5719-llvm-d3dd1354a49c321324878269189cdff7e0e151bb.zip | |
LiveIntervalAnalysis: Factor common code into splitSeparateComponents; NFC
llvm-svn: 248241
Diffstat (limited to 'llvm/lib/CodeGen/SplitKit.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/SplitKit.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/SplitKit.cpp b/llvm/lib/CodeGen/SplitKit.cpp index d06a316ba6c..665ed3b0d23 100644 --- a/llvm/lib/CodeGen/SplitKit.cpp +++ b/llvm/lib/CodeGen/SplitKit.cpp @@ -1082,16 +1082,14 @@ void SplitEditor::finish(SmallVectorImpl<unsigned> *LRMap) { ConnectedVNInfoEqClasses ConEQ(LIS); for (unsigned i = 0, e = Edit->size(); i != e; ++i) { // Don't use iterators, they are invalidated by create() below. - LiveInterval *li = &LIS.getInterval(Edit->get(i)); - unsigned NumComp = ConEQ.Classify(li); - if (NumComp <= 1) - continue; - DEBUG(dbgs() << " " << NumComp << " components: " << *li << '\n'); - SmallVector<LiveInterval*, 8> dups; - dups.push_back(li); - for (unsigned j = 1; j != NumComp; ++j) - dups.push_back(&Edit->createEmptyInterval()); - ConEQ.Distribute(&dups[0], MRI); + unsigned VReg = Edit->get(i); + LiveInterval &LI = LIS.getInterval(VReg); + SmallVector<LiveInterval*, 8> SplitLIs; + LIS.splitSeparateComponents(LI, SplitLIs); + unsigned Original = VRM.getOriginal(VReg); + for (LiveInterval *SplitLI : SplitLIs) + VRM.setIsSplitFromReg(SplitLI->reg, Original); + // The new intervals all map back to i. if (LRMap) LRMap->resize(Edit->size(), i); |

