make sure to handle dbg_value instructions in the middle of the block, not
authorJim Grosbach <grosbach@apple.com>
Fri, 25 Jun 2010 23:05:46 +0000 (23:05 +0000)
committerJim Grosbach <grosbach@apple.com>
Fri, 25 Jun 2010 23:05:46 +0000 (23:05 +0000)
just at the head, when doing diamond if-conversion. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106907 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/IfConversion.cpp

index ea4e68dbdaf6f94c803c1c44586ef3af23f97069..51fea7f94e5e93d3e2847a9545b57349f05eef2b 100644 (file)
@@ -1228,10 +1228,18 @@ bool IfConverter::IfConvertDiamond(BBInfo &BBI, IfcvtKind Kind,
     ++DI2;
   BBI1->NonPredSize -= NumDups1;
   BBI2->NonPredSize -= NumDups1;
-  while (NumDups1 != 0) {
+  
+  // Skip past the dups on each side separately since there may be
+  // differing dbg_value entries.
+  for (unsigned i = 0; i < NumDups1; ++i) {
     ++DI1;
+    if (!DI1->isDebugValue())
+      ++i;
+  }
+  while (NumDups1 != 0) {
     ++DI2;
-    --NumDups1;
+    if (!DI2->isDebugValue())
+      --NumDups1;
   }
 
   UpdatePredRedefs(BBI1->BB->begin(), DI1, Redefs, TRI);