diff options
author | Nikita Popov <npopov@redhat.com> | 2022-05-30 15:37:46 +0200 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2022-05-30 15:37:46 +0200 |
commit | 2e101cca690645d63ae4de1eb7b0e11d322448fd (patch) | |
tree | 3e46f2e5d3e9c7c1becea5c046ad4daa9b376046 /llvm/lib/Transforms/Utils/Local.cpp | |
parent | 1f1de06165bb39f66049cdc942151fc6ed193123 (diff) | |
download | llvm-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.cpp | 2 |
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(); |