1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00

Handle "always inline" note during inline cost analysis.

llvm-svn: 55712
This commit is contained in:
Devang Patel 2008-09-03 18:47:45 +00:00
parent dae7f0b9d7
commit 42fe8ff6e8
2 changed files with 4 additions and 6 deletions

View File

@ -140,12 +140,7 @@ bool Inliner::runOnSCC(const std::vector<CallGraphNode*> &SCC) {
int InlineCost = getInlineCost(CS);
float FudgeFactor = getInlineFudgeFactor(CS);
Function *Fn = CS.getCalledFunction();
bool AlwaysInline = false;
if (Fn && (Fn->getNotes() & FN_NOTE_AlwaysInline))
AlwaysInline = true;
if (!AlwaysInline
&& InlineCost >= (int)(InlineThreshold * FudgeFactor)) {
if (InlineCost >= (int)(InlineThreshold * FudgeFactor)) {
DOUT << " NOT Inlining: cost=" << InlineCost
<< ", Call: " << *CS.getInstruction();
} else {

View File

@ -222,6 +222,9 @@ int InlineCostAnalyzer::getInlineCost(CallSite CS,
if (CalleeFI.NeverInline)
return 2000000000;
if (Callee->getNotes() & FN_NOTE_AlwaysInline)
return -2000000000;
// Add to the inline quality for properties that make the call valuable to
// inline. This includes factors that indicate that the result of inlining
// the function will be optimizable. Currently this just looks at arguments