summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2016-07-11 03:37:59 +0000
committerHal Finkel <hfinkel@anl.gov>2016-07-11 03:37:59 +0000
commit2cac58f6045ef3d5e8407d10dc2ccb30bc470caf (patch)
tree5e14afe26cdb3a8fa03a35688a640a05d8c9b141 /llvm/lib
parentbf3957a553810f8cab2050b6d81707e43583d007 (diff)
downloadbcm5719-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.cpp5
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() &&
OpenPOWER on IntegriCloud