mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-27 22:55:15 +00:00
[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
This commit is contained in:
parent
821e7c7737
commit
28b6c23c41
@ -77,7 +77,6 @@ private:
|
||||
bool ReturnsNonNull(Function *F, SmallPtrSet<Function *, 8> &,
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user