diff options
author | Arthur Eubanks <aeubanks@google.com> | 2020-06-22 13:22:16 -0700 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2020-06-22 15:06:28 -0700 |
commit | d335c1317b6170918311fcbccc39fe31b3a84bda (patch) | |
tree | 091882d5ab8c65998203ca82922f47abe2d57171 /llvm/lib/Transforms/Utils/CloneFunction.cpp | |
parent | 516803dc8685ebcc5bce38b05391958ffee22643 (diff) | |
download | llvm-d335c1317b6170918311fcbccc39fe31b3a84bda.zip llvm-d335c1317b6170918311fcbccc39fe31b3a84bda.tar.gz llvm-d335c1317b6170918311fcbccc39fe31b3a84bda.tar.bz2 |
Fix dynamic alloca detection in CloneBasicBlock
Summary:
Simply check AI->isStaticAlloca instead of reimplementing checks for
static/dynamic allocas.
Reviewers: efriedma
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D82328
Diffstat (limited to 'llvm/lib/Transforms/Utils/CloneFunction.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/CloneFunction.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp index fce926f..788983c 100644 --- a/llvm/lib/Transforms/Utils/CloneFunction.cpp +++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp @@ -46,7 +46,7 @@ BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap, if (BB->hasName()) NewBB->setName(BB->getName() + NameSuffix); - bool hasCalls = false, hasDynamicAllocas = false, hasStaticAllocas = false; + bool hasCalls = false, hasDynamicAllocas = false; Module *TheModule = F ? F->getParent() : nullptr; // Loop over all instructions, and copy them over. @@ -62,18 +62,15 @@ BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap, hasCalls |= (isa<CallInst>(I) && !isa<DbgInfoIntrinsic>(I)); if (const AllocaInst *AI = dyn_cast<AllocaInst>(&I)) { - if (isa<ConstantInt>(AI->getArraySize())) - hasStaticAllocas = true; - else + if (!AI->isStaticAlloca()) { hasDynamicAllocas = true; + } } } if (CodeInfo) { CodeInfo->ContainsCalls |= hasCalls; CodeInfo->ContainsDynamicAllocas |= hasDynamicAllocas; - CodeInfo->ContainsDynamicAllocas |= hasStaticAllocas && - BB != &BB->getParent()->getEntryBlock(); } return NewBB; } |