[vmkit-commits] [vmkit] r200163 - If inlining a function fail, marks it as NoInline.

Gael Thomas gael.thomas at lip6.fr
Sun Jan 26 15:12:07 PST 2014


Author: gthomas
Date: Sun Jan 26 17:12:07 2014
New Revision: 200163

URL: http://llvm.org/viewvc/llvm-project?rev=200163&view=rev
Log:
If inlining a function fail, marks it as NoInline. 


Modified:
    vmkit/branches/mcjit/include/vmkit/compiler.h
    vmkit/branches/mcjit/lib/vmkit/compiler.cc
    vmkit/branches/mcjit/lib/vmkit/inliner.cc

Modified: vmkit/branches/mcjit/include/vmkit/compiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/vmkit/compiler.h?rev=200163&r1=200162&r2=200163&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/vmkit/compiler.h (original)
+++ vmkit/branches/mcjit/include/vmkit/compiler.h Sun Jan 26 17:12:07 2014
@@ -30,6 +30,7 @@ namespace vmkit {
 		virtual llvm::Function*  llvmFunction() { return 0; }
 		virtual uint64_t         inlineWeight();
 		virtual CompilationUnit* unit() { return 0; }
+		virtual void             markAsNeverInline();
 	};
 
 	class NativeSymbol : public Symbol {

Modified: vmkit/branches/mcjit/lib/vmkit/compiler.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/vmkit/compiler.cc?rev=200163&r1=200162&r2=200163&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/vmkit/compiler.cc (original)
+++ vmkit/branches/mcjit/lib/vmkit/compiler.cc Sun Jan 26 17:12:07 2014
@@ -46,6 +46,11 @@ uint64_t Symbol::inlineWeight() {
 	return cachedWeight = weight;
 }
 
+void Symbol::markAsNeverInline() {
+	if(llvmFunction())
+		llvmFunction()->addFnAttr(llvm::Attribute::NoInline);
+}
+
 void* CompilationUnit::operator new(size_t n, BumpAllocator* allocator) {
 	return allocator->allocate(n);
 }

Modified: vmkit/branches/mcjit/lib/vmkit/inliner.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/vmkit/inliner.cc?rev=200163&r1=200162&r2=200163&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/vmkit/inliner.cc (original)
+++ vmkit/branches/mcjit/lib/vmkit/inliner.cc Sun Jan 26 17:12:07 2014
@@ -161,8 +161,11 @@ namespace vmkit {
 							takeNext = 0;
 							it = bb->begin();
 						}
-					} else if(bc != callee)
-						bc->replaceAllUsesWith(callee);
+					} else {
+						symbol->markAsNeverInline();
+						if(bc != callee)
+							bc->replaceAllUsesWith(callee);
+					}
 				}
 			}
 





More information about the vmkit-commits mailing list