diff options
author | Carlos Alberto Enciso <carlos.alberto.enciso@gmail.com> | 2018-09-19 08:16:56 +0000 |
---|---|---|
committer | Carlos Alberto Enciso <carlos.alberto.enciso@gmail.com> | 2018-09-19 08:16:56 +0000 |
commit | ba4e437c6ad18746cd2684410c6679be7d1376e4 (patch) | |
tree | 119c123394149065fe5a4346f55fdaa6f7147e6d /llvm/lib/Transforms/Utils/SimplifyCFG.cpp | |
parent | f1f3e7377cd4baf5f23dd852492d715e0d290550 (diff) | |
download | bcm5719-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.cpp | 8 |
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()); |