Fix another case where debug info interferes with
an optimization.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66288 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp
index 7c71f46..10b3104 100644
--- a/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -385,7 +385,7 @@
       // only uses stuff defined outside of the condition.  If so, hoist it out.
       switch (I->getOpcode()) {
       default: return false;  // Cannot hoist this out safely.
-      case Instruction::Load:
+      case Instruction::Load: {
         // We can hoist loads that are non-volatile and obviously cannot trap.
         if (cast<LoadInst>(I)->isVolatile())
           return false;
@@ -397,9 +397,13 @@
         // Finally, we have to check to make sure there are no instructions
         // before the load in its basic block, as we are going to hoist the loop
         // out to its predecessor.
-        if (PBB->begin() != BasicBlock::iterator(I))
+        BasicBlock::iterator IP = PBB->begin();
+        while (isa<DbgInfoIntrinsic>(IP))
+          IP++;
+        if (IP != BasicBlock::iterator(I))
           return false;
         break;
+      }
       case Instruction::Add:
       case Instruction::Sub:
       case Instruction::And: