[llvm] r224805 - RegisterCoalescer: With subrange liveness there may be no RedefVNI for unused lanes.

Matthias Braun matze at braunis.de
Tue Dec 23 18:11:48 PST 2014


Author: matze
Date: Tue Dec 23 20:11:48 2014
New Revision: 224805

URL: http://llvm.org/viewvc/llvm-project?rev=224805&view=rev
Log:
RegisterCoalescer: With subrange liveness there may be no RedefVNI for unused lanes.

Modified:
    llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp

Modified: llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?rev=224805&r1=224804&r2=224805&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp (original)
+++ llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp Tue Dec 23 20:11:48 2014
@@ -1817,9 +1817,12 @@ JoinVals::analyzeValue(unsigned ValNo, J
       // not important.
       if (Redef) {
         V.RedefVNI = LR.Query(VNI->def).valueIn();
-        assert(V.RedefVNI && "Instruction is reading nonexistent value");
-        computeAssignment(V.RedefVNI->id, Other);
-        V.ValidLanes |= Vals[V.RedefVNI->id].ValidLanes;
+        assert(TrackSubRegLiveness || V.RedefVNI &&
+               "Instruction is reading nonexistent value");
+        if (V.RedefVNI != nullptr) {
+          computeAssignment(V.RedefVNI->id, Other);
+          V.ValidLanes |= Vals[V.RedefVNI->id].ValidLanes;
+        }
       }
 
       // An IMPLICIT_DEF writes undef values.





More information about the llvm-commits mailing list