summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
diff options
context:
space:
mode:
authorCarlos Alberto Enciso <carlos.alberto.enciso@gmail.com>2018-09-19 08:16:56 +0000
committerCarlos Alberto Enciso <carlos.alberto.enciso@gmail.com>2018-09-19 08:16:56 +0000
commitba4e437c6ad18746cd2684410c6679be7d1376e4 (patch)
tree119c123394149065fe5a4346f55fdaa6f7147e6d /llvm/lib/Transforms/Utils/SimplifyCFG.cpp
parentf1f3e7377cd4baf5f23dd852492d715e0d290550 (diff)
downloadbcm5719-llvm-ba4e437c6ad18746cd2684410c6679be7d1376e4.tar.gz
bcm5719-llvm-ba4e437c6ad18746cd2684410c6679be7d1376e4.zip
[DebugInfo][Dexter] Speculated BB presents illegal variable value to debugger.
When SimplifyCFG changes the PHI node into a select instruction, the debug information becomes ambiguous. It causes the debugger to display wrong variable value. Differential Revision: https://reviews.llvm.org/D51976 llvm-svn: 342527
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/SimplifyCFG.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index 422d1c9ef0a..493d1688226 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -2370,15 +2370,19 @@ static bool FoldTwoEntryPHINode(PHINode *PN, const TargetTransformInfo &TTI,
// Move all 'aggressive' instructions, which are defined in the
// conditional parts of the if's up to the dominating block.
if (IfBlock1) {
- for (auto &I : *IfBlock1)
+ for (auto &I : *IfBlock1) {
I.dropUnknownNonDebugMetadata();
+ dropDebugUsers(I);
+ }
DomBlock->getInstList().splice(InsertPt->getIterator(),
IfBlock1->getInstList(), IfBlock1->begin(),
IfBlock1->getTerminator()->getIterator());
}
if (IfBlock2) {
- for (auto &I : *IfBlock2)
+ for (auto &I : *IfBlock2) {
I.dropUnknownNonDebugMetadata();
+ dropDebugUsers(I);
+ }
DomBlock->getInstList().splice(InsertPt->getIterator(),
IfBlock2->getInstList(), IfBlock2->begin(),
IfBlock2->getTerminator()->getIterator());
OpenPOWER on IntegriCloud