diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-06-25 08:04:19 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-06-25 08:04:19 +0000 |
commit | d346a377375a4780c95f4d30150bdeaed1a35b65 (patch) | |
tree | 3d072a06308fde37e739c18b40e6da6d57996e42 /llvm/lib/Transforms/IPO/PruneEH.cpp | |
parent | bb53d23ef8127b0be819b730e5094bd1d4b8e515 (diff) | |
download | bcm5719-llvm-d346a377375a4780c95f4d30150bdeaed1a35b65.tar.gz bcm5719-llvm-d346a377375a4780c95f4d30150bdeaed1a35b65.zip |
[SimplifyCFG] Stop inserting calls to llvm.trap for UB
SimplifyCFG had logic to insert calls to llvm.trap for two very
particular IR patterns: stores and invokes of undef/null.
While InstCombine canonicalizes certain undefined behavior IR patterns
to stores of undef, phase ordering means that this cannot be relied upon
in general.
There are much better tools than llvm.trap: UBSan and ASan.
N.B. I could be argued into reverting this change if a clear argument as
to why it is important that we synthesize llvm.trap for stores, I'd be
hard pressed to see why it'd be useful for invokes...
llvm-svn: 273778
Diffstat (limited to 'llvm/lib/Transforms/IPO/PruneEH.cpp')
-rw-r--r-- | llvm/lib/Transforms/IPO/PruneEH.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/IPO/PruneEH.cpp b/llvm/lib/Transforms/IPO/PruneEH.cpp index 04383f4f3fa..abde3d3609a 100644 --- a/llvm/lib/Transforms/IPO/PruneEH.cpp +++ b/llvm/lib/Transforms/IPO/PruneEH.cpp @@ -258,7 +258,7 @@ void PruneEH::DeleteBasicBlock(BasicBlock *BB) { if (TokenInst) { if (!isa<TerminatorInst>(TokenInst)) - changeToUnreachable(TokenInst->getNextNode(), /*UseLLVMTrap=*/false); + changeToUnreachable(TokenInst->getNextNode()); } else { // Get the list of successors of this block. std::vector<BasicBlock *> Succs(succ_begin(BB), succ_end(BB)); |