From: Chandler Carruth Date: Sat, 31 Oct 2015 00:28:37 +0000 (+0000) Subject: [FunctionAttrs] Inline the prototype attribute inference to an existing X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=f73144bb0330cc615083dd20a550fecdfd0fa4c4;ds=sidebyside [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 --- diff --git a/lib/Transforms/IPO/FunctionAttrs.cpp b/lib/Transforms/IPO/FunctionAttrs.cpp index 2928cb0bc73..80050220c8b 100644 --- a/lib/Transforms/IPO/FunctionAttrs.cpp +++ b/lib/Transforms/IPO/FunctionAttrs.cpp @@ -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().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); }