diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2017-02-09 23:11:52 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2017-02-09 23:11:52 +0000 |
| commit | cea1e4e79a76734bacbb76ab99ba267aca7e7499 (patch) | |
| tree | 6f859607deed0df9b5f88be1494fc4fd371a82eb /llvm/lib/Transforms/IPO/FunctionAttrs.cpp | |
| parent | f1e773cab5053b1d4907f940af7fdbcedad0e266 (diff) | |
| download | bcm5719-llvm-cea1e4e79a76734bacbb76ab99ba267aca7e7499.tar.gz bcm5719-llvm-cea1e4e79a76734bacbb76ab99ba267aca7e7499.zip | |
De-duplicate some code for creating an AARGetter suitable for the legacy PM.
I'm about to use this in a couple more places.
Differential Revision: https://reviews.llvm.org/D29793
llvm-svn: 294648
Diffstat (limited to 'llvm/lib/Transforms/IPO/FunctionAttrs.cpp')
| -rw-r--r-- | llvm/lib/Transforms/IPO/FunctionAttrs.cpp | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp index 740e9fb8b90..02f2b303226 100644 --- a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp +++ b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp @@ -174,7 +174,7 @@ static MemoryAccessKind checkFunctionMemoryAccess(Function &F, AAResults &AAR, /// Deduce readonly/readnone attributes for the SCC. template <typename AARGetterT> -static bool addReadAttrs(const SCCNodeSet &SCCNodes, AARGetterT AARGetter) { +static bool addReadAttrs(const SCCNodeSet &SCCNodes, AARGetterT &&AARGetter) { // Check if any of the functions in the SCC read or write memory. If they // write memory then they can't be marked readnone or readonly. bool ReadsMemory = false; @@ -1163,19 +1163,7 @@ static bool runImpl(CallGraphSCC &SCC, AARGetterT AARGetter) { bool PostOrderFunctionAttrsLegacyPass::runOnSCC(CallGraphSCC &SCC) { if (skipSCC(SCC)) return false; - - // We compute dedicated AA results for each function in the SCC as needed. We - // use a lambda referencing external objects so that they live long enough to - // be queried, but we re-use them each time. - Optional<BasicAAResult> BAR; - Optional<AAResults> AAR; - auto AARGetter = [&](Function &F) -> AAResults & { - BAR.emplace(createLegacyPMBasicAAResult(*this, F)); - AAR.emplace(createLegacyPMAAResults(*this, F, *BAR)); - return *AAR; - }; - - return runImpl(SCC, AARGetter); + return runImpl(SCC, LegacyAARGetter(*this)); } namespace { |

