aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2024-04-05 13:00:12 +0000
committerDimitry Andric <dim@FreeBSD.org>2024-04-05 15:44:49 +0000
commitaaabed1dea7c1d16cdc5457bf6dee74164104e26 (patch)
tree4e83446088ab7ded16c3d3a84ce5faad8e19c416
parentfd56d24725860a3c1f12180cf8503d38d8d0c70d (diff)
downloadsrc-aaabed1dea7c1d16cdc5457bf6dee74164104e26.tar.gz
src-aaabed1dea7c1d16cdc5457bf6dee74164104e26.zip
Merge commit eb8f379567e8 from llvm-project (by Florian Hahn):
[DSE] Remove malloc from EarliestEscapeInfo before removing. (#84157) Not removing the malloc from earliest escape info leaves stale entries in the cache. Fixes https://github.com/llvm/llvm-project/issues/84051. PR: https://github.com/llvm/llvm-project/pull/84157 This fixes a crash in clang (usually a bus error, but can also be another memory error) when compiling the science/siconos port. PR: 278174 Reported by: yuri MFC after: 3 days
-rw-r--r--contrib/llvm-project/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp b/contrib/llvm-project/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
index d3fbe49439a8..62a9b6a41c5b 100644
--- a/contrib/llvm-project/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
+++ b/contrib/llvm-project/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
@@ -1893,6 +1893,7 @@ struct DSEState {
Malloc->getArgOperand(0), IRB, TLI);
if (!Calloc)
return false;
+
MemorySSAUpdater Updater(&MSSA);
auto *LastDef =
cast<MemoryDef>(Updater.getMemorySSA()->getMemoryAccess(Malloc));
@@ -1901,9 +1902,8 @@ struct DSEState {
LastDef);
auto *NewAccessMD = cast<MemoryDef>(NewAccess);
Updater.insertDef(NewAccessMD, /*RenameUses=*/true);
- Updater.removeMemoryAccess(Malloc);
Malloc->replaceAllUsesWith(Calloc);
- Malloc->eraseFromParent();
+ deleteDeadInstruction(Malloc);
return true;
}