mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-10 14:36:01 +00:00
[PM] Some preparatory refactoring to minimize the diff of D21921
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274456 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e82e4ddb87
commit
ad5ea26278
@ -1067,22 +1067,10 @@ INITIALIZE_PASS_END(PostOrderFunctionAttrsLegacyPass, "functionattrs",
|
||||
|
||||
Pass *llvm::createPostOrderFunctionAttrsLegacyPass() { return new PostOrderFunctionAttrsLegacyPass(); }
|
||||
|
||||
bool PostOrderFunctionAttrsLegacyPass::runOnSCC(CallGraphSCC &SCC) {
|
||||
if (skipSCC(SCC))
|
||||
return false;
|
||||
template <typename AARGetterT>
|
||||
static bool runImpl(CallGraphSCC &SCC, AARGetterT AARGetter) {
|
||||
bool Changed = 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;
|
||||
};
|
||||
|
||||
// Fill SCCNodes with the elements of the SCC. Used for quickly looking up
|
||||
// whether a given CallGraphNode is in this SCC. Also track whether there are
|
||||
// any external or opt-none nodes that will prevent us from optimizing any
|
||||
@ -1116,6 +1104,24 @@ bool PostOrderFunctionAttrsLegacyPass::runOnSCC(CallGraphSCC &SCC) {
|
||||
return Changed;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
namespace {
|
||||
struct ReversePostOrderFunctionAttrsLegacyPass : public ModulePass {
|
||||
static char ID; // Pass identification, replacement for typeid
|
||||
|
Loading…
x
Reference in New Issue
Block a user