From 691e52445e2a32d237fc23073fbaf93fb96ce584 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 2 Sep 2008 22:16:13 +0000 Subject: respect inline=never and inline=always notes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55673 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/Inliner.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/Transforms/IPO') diff --git a/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp index 1c3d5a81f3..e9ae21f795 100644 --- a/lib/Transforms/IPO/Inliner.cpp +++ b/lib/Transforms/IPO/Inliner.cpp @@ -140,7 +140,14 @@ bool Inliner::runOnSCC(const std::vector &SCC) { int InlineCost = getInlineCost(CS); float FudgeFactor = getInlineFudgeFactor(CS); - if (InlineCost >= (int)(InlineThreshold * FudgeFactor)) { + Function *Fn = CS.getCalledFunction(); + bool AlwaysInline = false; + if (Fn && (Fn->getNotes() & FP_AlwaysInline)) + AlwaysInline = true; + if (Fn && (Fn->getNotes() & FP_NoInline)) + DOUT << "NOT Inlining: inline=never is set" << *CS.getInstruction(); + else if (!AlwaysInline + && InlineCost >= (int)(InlineThreshold * FudgeFactor)) { DOUT << " NOT Inlining: cost=" << InlineCost << ", Call: " << *CS.getInstruction(); } else { -- cgit v1.2.3