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://review.tizen.org/git/?a=commitdiff_plain;h=444d0056157592b565a2ed7d4632e23420a79a92;p=platform%2Fupstream%2Fllvm.git [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. llvm-svn: 247522 --- diff --git a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp index 30c0b3a..3ea5468 100644 --- a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp +++ b/llvm/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;