diff options
| author | Hideto Ueno <uenoku.tokotoko@gmail.com> | 2019-09-17 06:53:27 +0000 |
|---|---|---|
| committer | Hideto Ueno <uenoku.tokotoko@gmail.com> | 2019-09-17 06:53:27 +0000 |
| commit | 30d86f1858dbeaaeb5d5a2a6ba8631f7f839e094 (patch) | |
| tree | ecc350d3d4ab0f0c90692808e4053cafa45e46f9 /llvm/lib/Transforms | |
| parent | b6c05b2a5270b0608e7150aa9407c73056c5c64c (diff) | |
| download | bcm5719-llvm-30d86f1858dbeaaeb5d5a2a6ba8631f7f839e094.tar.gz bcm5719-llvm-30d86f1858dbeaaeb5d5a2a6ba8631f7f839e094.zip | |
[Attributor] Use Alias Analysis in noalias callsite argument deduction
Summary: This patch adds a check of alias analysis in `noalias` callsite argument deduction.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67604
llvm-svn: 372075
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/IPO/Attributor.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/IPO/Attributor.cpp b/llvm/lib/Transforms/IPO/Attributor.cpp index 90b0772a869..a6f8472e85d 100644 --- a/llvm/lib/Transforms/IPO/Attributor.cpp +++ b/llvm/lib/Transforms/IPO/Attributor.cpp @@ -1762,11 +1762,18 @@ struct AANoAliasCallSiteArgument final : AANoAliasImpl { if (!ArgOp->getType()->isPointerTy()) continue; - // TODO: Use AliasAnalysis - // AAResults& AAR = ..; - // if(AAR.isNoAlias(&getAssociatedValue(), ArgOp)) - // return indicatePessimitisicFixpoint(); - + if (const Function *F = getAnchorScope()) { + if (AAResults *AAR = A.getInfoCache().getAAResultsForFunction(*F)) { + LLVM_DEBUG(dbgs() + << "[Attributor][NoAliasCSArg] Check alias between " + "callsite arguments " + << AAR->isNoAlias(&getAssociatedValue(), ArgOp) << " " + << getAssociatedValue() << " " << *ArgOp << "\n"); + + if (AAR->isNoAlias(&getAssociatedValue(), ArgOp)) + continue; + } + } return indicatePessimisticFixpoint(); } |

