From: Jim Grosbach Date: Fri, 25 Jun 2010 23:05:46 +0000 (+0000) Subject: make sure to handle dbg_value instructions in the middle of the block, not X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=9f054f017c7bced071f5a4de606cec6751edd23f;p=oota-llvm.git make sure to handle dbg_value instructions in the middle of the block, not 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 --- diff --git a/lib/CodeGen/IfConversion.cpp b/lib/CodeGen/IfConversion.cpp index ea4e68dbdaf..51fea7f94e5 100644 --- a/lib/CodeGen/IfConversion.cpp +++ b/lib/CodeGen/IfConversion.cpp @@ -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);