diff options
| author | Hal Finkel <hfinkel@anl.gov> | 2016-07-11 03:37:59 +0000 |
|---|---|---|
| committer | Hal Finkel <hfinkel@anl.gov> | 2016-07-11 03:37:59 +0000 |
| commit | 2cac58f6045ef3d5e8407d10dc2ccb30bc470caf (patch) | |
| tree | 5e14afe26cdb3a8fa03a35688a640a05d8c9b141 /llvm/lib | |
| parent | bf3957a553810f8cab2050b6d81707e43583d007 (diff) | |
| download | bcm5719-llvm-2cac58f6045ef3d5e8407d10dc2ccb30bc470caf.tar.gz bcm5719-llvm-2cac58f6045ef3d5e8407d10dc2ccb30bc470caf.zip | |
Pointer-comparison folding should look through returned-argument functions
For functions which are known to return a specific argument, pointer-comparison
folding can look through the function calls as part of its analysis.
Differential Revision: http://reviews.llvm.org/D9387
llvm-svn: 275039
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Analysis/InstructionSimplify.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index a41be07fcd5..27c10ee7cf8 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -621,6 +621,11 @@ static Constant *stripAndComputeConstantOffsets(const DataLayout &DL, Value *&V, break; V = GA->getAliasee(); } else { + if (auto CS = CallSite(V)) + if (Value *RV = CS.getReturnedArgOperand()) { + V = RV; + continue; + } break; } assert(V->getType()->getScalarType()->isPointerTy() && |

