[FunctionAttrs] Inline the prototype attribute inference to an existing

loop over the SCC.

The separate function wasn't really adding much, NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251728 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chandler Carruth 2015-10-31 00:28:37 +00:00
parent e39e3a473d
commit f73144bb03

View File

@ -73,8 +73,6 @@ struct FunctionAttrs : public CallGraphSCCPass {
private:
TargetLibraryInfo *TLI;
bool annotateLibraryCalls(const CallGraphSCC &SCC);
};
}
@ -1750,27 +1748,9 @@ static bool inferPrototypeAttributes(Function &F, const TargetLibraryInfo &TLI)
return true;
}
/// Adds attributes to well-known standard library call declarations.
bool FunctionAttrs::annotateLibraryCalls(const CallGraphSCC &SCC) {
bool MadeChange = false;
// Check each function in turn annotating well-known library function
// declarations with attributes.
for (CallGraphSCC::iterator I = SCC.begin(), E = SCC.end(); I != E; ++I) {
Function *F = (*I)->getFunction();
if (F && F->isDeclaration())
MadeChange |= inferPrototypeAttributes(*F, *TLI);
}
return MadeChange;
}
bool FunctionAttrs::runOnSCC(CallGraphSCC &SCC) {
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
// Annotate declarations for which we have special knowledge.
bool Changed = annotateLibraryCalls(SCC);
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
@ -1798,6 +1778,11 @@ bool FunctionAttrs::runOnSCC(CallGraphSCC &SCC) {
continue;
}
// When initially processing functions, also infer their prototype
// attributes if they are declarations.
if (F->isDeclaration())
Changed |= inferPrototypeAttributes(*F, *TLI);
SCCNodes.insert(F);
}