diff options
author | Florian Mayer <fmayer@google.com> | 2021-09-13 10:01:55 +0100 |
---|---|---|
committer | Florian Mayer <fmayer@google.com> | 2021-09-13 20:52:26 +0100 |
commit | 0a22510f3e649d5d84cc404690cfb374fab46238 (patch) | |
tree | 4c444b003cc79eeda8accf4e66b97250ef3afb74 /llvm/lib/Analysis/ValueTracking.cpp | |
parent | 5b5d774f5d3840a1e242f0ef5873d735ccf817a4 (diff) | |
download | llvm-0a22510f3e649d5d84cc404690cfb374fab46238.zip llvm-0a22510f3e649d5d84cc404690cfb374fab46238.tar.gz llvm-0a22510f3e649d5d84cc404690cfb374fab46238.tar.bz2 |
[value-tracking] see through returned attribute.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D109675
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 53d7ddf..8d18d133 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -4533,6 +4533,12 @@ AllocaInst *llvm::findAllocaForValue(Value *V, bool OffsetZero) { if (OffsetZero && !GEP->hasAllZeroIndices()) return nullptr; AddWork(GEP->getPointerOperand()); + } else if (CallBase *CB = dyn_cast<CallBase>(V)) { + Value *Returned = CB->getReturnedArgOperand(); + if (Returned) + AddWork(Returned); + else + return nullptr; } else { return nullptr; } |