From: Chandler Carruth Date: Sun, 13 Sep 2015 08:03:23 +0000 (+0000) Subject: [FunctionAttrs] Make the per-function attribute inference a boring X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=28b6c23c41301dfdbd55a998583503498d984a3f [FunctionAttrs] Make the per-function attribute inference a boring static function rather than a method. It just needed access to TargetLibraryInfo, and this way it can be easily reused between the current FunctionAttrs implementation and any port for the new pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247522 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/IPO/FunctionAttrs.cpp b/lib/Transforms/IPO/FunctionAttrs.cpp index 30c0b3a1763..3ea54687365 100644 --- a/lib/Transforms/IPO/FunctionAttrs.cpp +++ b/lib/Transforms/IPO/FunctionAttrs.cpp @@ -77,7 +77,6 @@ private: bool ReturnsNonNull(Function *F, SmallPtrSet &, bool &Speculative) const; bool AddNonNullAttrs(const CallGraphSCC &SCC); - bool inferPrototypeAttributes(Function &F); bool annotateLibraryCalls(const CallGraphSCC &SCC); }; } @@ -983,13 +982,13 @@ static void setDoesNotAlias(Function &F, unsigned n) { /// attributes. /// /// Returns true if any attributes were set and false otherwise. -bool FunctionAttrs::inferPrototypeAttributes(Function &F) { +static bool inferPrototypeAttributes(Function &F, const TargetLibraryInfo &TLI) { if (F.hasFnAttribute(Attribute::OptimizeNone)) return false; FunctionType *FTy = F.getFunctionType(); LibFunc::Func TheLibFunc; - if (!(TLI->getLibFunc(F.getName(), TheLibFunc) && TLI->has(TheLibFunc))) + if (!(TLI.getLibFunc(F.getName(), TheLibFunc) && TLI.has(TheLibFunc))) return false; switch (TheLibFunc) { @@ -1792,7 +1791,7 @@ bool FunctionAttrs::annotateLibraryCalls(const CallGraphSCC &SCC) { Function *F = (*I)->getFunction(); if (F && F->isDeclaration()) - MadeChange |= inferPrototypeAttributes(*F); + MadeChange |= inferPrototypeAttributes(*F, *TLI); } return MadeChange;