[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