GVN-hoist: add missing check for all GEP operands available
authorSebastian Pop <sebpop@gmail.com>
Thu, 21 Jul 2016 23:32:39 +0000 (23:32 +0000)
committerSebastian Pop <sebpop@gmail.com>
Thu, 21 Jul 2016 23:32:39 +0000 (23:32 +0000)
llvm-svn: 276364

llvm/lib/Transforms/Scalar/GVNHoist.cpp

index ad373ba..c420089 100644 (file)
@@ -613,6 +613,9 @@ public:
 
     // Also copy Val when it is a GEP.
     if (Val && isa<GetElementPtrInst>(Val)) {
+      // Check whether we can compute the GEP at HoistPt.
+      if (!allOperandsAvailable(Val, HoistPt))
+        return false;
       Instruction *ClonedVal = Val->clone();
       ClonedVal->insertBefore(HoistPt->getTerminator());
       // Conservatively discard any optimization hints, they may differ on the