From 6439fde6d403d3e01e265fb84b0beffe67f745c5 Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Tue, 20 Oct 2020 13:27:54 +0100 Subject: [PATCH] [DSE] Bail out from getLocForWriteEx if call is not argmemonly/inacc_mem. This change should currently not have any impact, but guard against further inconsistencies between MemoryLocation and function attributes. --- llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp index f0eb520..58decea 100644 --- a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp +++ b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp @@ -1701,6 +1701,11 @@ struct DSEState { return {MemoryLocation::getForDest(MTI)}; if (auto *CB = dyn_cast(I)) { + // If the functions may write to memory we do not know about, bail out. + if (!CB->onlyAccessesArgMemory() && + !CB->onlyAccessesInaccessibleMemOrArgMem()) + return None; + LibFunc LF; if (TLI.getLibFunc(*CB, LF) && TLI.has(LF)) { switch (LF) { -- 2.7.4