From 28b6c23c41301dfdbd55a998583503498d984a3f Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Sun, 13 Sep 2015 08:03:23 +0000 Subject: [PATCH] [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 --- lib/Transforms/IPO/FunctionAttrs.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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;