summaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2008-09-03 18:10:21 +0000
committerDevang Patel <dpatel@apple.com>2008-09-03 18:10:21 +0000
commit910c120a7c439ee3c6e9cd249ff0a05f0fdb6c98 (patch)
tree90cce6094815474efbf98565d659e8d5856d6a5d /lib/Transforms/IPO
parentd5d81a457b5ff758b3fcc527af38827490bc68a5 (diff)
downloadllvm-910c120a7c439ee3c6e9cd249ff0a05f0fdb6c98.tar.gz
llvm-910c120a7c439ee3c6e9cd249ff0a05f0fdb6c98.tar.bz2
llvm-910c120a7c439ee3c6e9cd249ff0a05f0fdb6c98.tar.xz
Handle "noinline" note inside the simple inliner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55708 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO')
-rw-r--r--lib/Transforms/IPO/InlineSimple.cpp5
-rw-r--r--lib/Transforms/IPO/Inliner.cpp6
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/Transforms/IPO/InlineSimple.cpp b/lib/Transforms/IPO/InlineSimple.cpp
index 63a4798cce..4171e22302 100644
--- a/lib/Transforms/IPO/InlineSimple.cpp
+++ b/lib/Transforms/IPO/InlineSimple.cpp
@@ -63,6 +63,11 @@ bool SimpleInliner::doInitialization(CallGraph &CG) {
Module &M = CG.getModule();
+ for (Module::iterator I = M.begin(), E = M.end();
+ I != E; ++I)
+ if (!I->isDeclaration() && I->getNotes() == FN_NOTE_NoInline)
+ NeverInline.insert(I);
+
// Get llvm.noinline
GlobalVariable *GV = M.getNamedGlobal("llvm.noinline");
diff --git a/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp
index 845ffd864e..3ea16208a5 100644
--- a/lib/Transforms/IPO/Inliner.cpp
+++ b/lib/Transforms/IPO/Inliner.cpp
@@ -144,10 +144,8 @@ bool Inliner::runOnSCC(const std::vector<CallGraphNode*> &SCC) {
bool AlwaysInline = false;
if (Fn && (Fn->getNotes() & FN_NOTE_AlwaysInline))
AlwaysInline = true;
- if (Fn && (Fn->getNotes() & FN_NOTE_NoInline))
- DOUT << "NOT Inlining: inline=never is set" << *CS.getInstruction();
- else if (!AlwaysInline
- && InlineCost >= (int)(InlineThreshold * FudgeFactor)) {
+ if (!AlwaysInline
+ && InlineCost >= (int)(InlineThreshold * FudgeFactor)) {
DOUT << " NOT Inlining: cost=" << InlineCost
<< ", Call: " << *CS.getInstruction();
} else {