aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/Local.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2022-05-30 15:37:46 +0200
committerNikita Popov <npopov@redhat.com>2022-05-30 15:37:46 +0200
commit2e101cca690645d63ae4de1eb7b0e11d322448fd (patch)
tree3e46f2e5d3e9c7c1becea5c046ad4daa9b376046 /llvm/lib/Transforms/Utils/Local.cpp
parent1f1de06165bb39f66049cdc942151fc6ed193123 (diff)
downloadllvm-2e101cca690645d63ae4de1eb7b0e11d322448fd.zip
llvm-2e101cca690645d63ae4de1eb7b0e11d322448fd.tar.gz
llvm-2e101cca690645d63ae4de1eb7b0e11d322448fd.tar.bz2
[Local] Don't remove invoke of non-willreturn function
The code was only checking for memory side-effects, but not for divergence side-effects. Replace this with a generic check.
Diffstat (limited to 'llvm/lib/Transforms/Utils/Local.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/Local.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
index 5e37f38..a060975 100644
--- a/llvm/lib/Transforms/Utils/Local.cpp
+++ b/llvm/lib/Transforms/Utils/Local.cpp
@@ -2366,7 +2366,7 @@ static bool markAliveBlocks(Function &F,
Changed = true;
}
if (II->doesNotThrow() && canSimplifyInvokeNoUnwind(&F)) {
- if (II->use_empty() && II->onlyReadsMemory()) {
+ if (II->use_empty() && !II->mayHaveSideEffects()) {
// jump to the normal destination branch.
BasicBlock *NormalDestBB = II->getNormalDest();
BasicBlock *UnwindDestBB = II->getUnwindDest();