[llvm-commits] [llvm] r55673 - in /llvm/trunk: lib/Transforms/IPO/Inliner.cpp test/Transforms/Inline/2008-09-02-AlwaysInline.ll test/Transforms/Inline/2008-09-02-NoInline.ll
Devang Patel
dpatel at apple.com
Tue Sep 2 15:16:13 PDT 2008
Author: dpatel
Date: Tue Sep 2 17:16:13 2008
New Revision: 55673
URL: http://llvm.org/viewvc/llvm-project?rev=55673&view=rev
Log:
respect inline=never and inline=always notes.
Added:
llvm/trunk/test/Transforms/Inline/2008-09-02-AlwaysInline.ll
llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll
Modified:
llvm/trunk/lib/Transforms/IPO/Inliner.cpp
Modified: llvm/trunk/lib/Transforms/IPO/Inliner.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/Inliner.cpp?rev=55673&r1=55672&r2=55673&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/Inliner.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/Inliner.cpp Tue Sep 2 17:16:13 2008
@@ -140,7 +140,14 @@
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 {
Added: llvm/trunk/test/Transforms/Inline/2008-09-02-AlwaysInline.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2008-09-02-AlwaysInline.ll?rev=55673&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/Inline/2008-09-02-AlwaysInline.ll (added)
+++ llvm/trunk/test/Transforms/Inline/2008-09-02-AlwaysInline.ll Tue Sep 2 17:16:13 2008
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | opt -inline-threshold=0 -inline | llvm-dis | not grep call
+
+define i32 @fn2() notes(inline=always) {
+ ret i32 1
+}
+
+define i32 @fn3() {
+ %r = call i32 @fn2()
+ ret i32 %r
+}
Added: llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll?rev=55673&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll (added)
+++ llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll Tue Sep 2 17:16:13 2008
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | opt -inline | llvm-dis | grep call | count 1
+
+define i32 @fn2() notes(inline=never) {
+ ret i32 1
+}
+
+define i32 @fn3() {
+ %r = call i32 @fn2()
+ ret i32 %r
+}
More information about the llvm-commits
mailing list