[llvm-commits] [dragonegg] r88777 - /dragonegg/trunk/llvm-backend.cpp
Duncan Sands
baldrick at free.fr
Sat Nov 14 02:59:38 PST 2009
Author: baldrick
Date: Sat Nov 14 04:59:38 2009
New Revision: 88777
URL: http://llvm.org/viewvc/llvm-project?rev=88777&view=rev
Log:
Port commit 85982 (evancheng) from llvm-gcc:
llvm-gcc is inlining too little at -O2 for C++ code. On WebKit, llvm-gcc
compiled code is generally > 20% smaller, but it's > 5% slower. GCC mark
all C++ member functions as "inline" and that makes it inline
aggressively. After careful consideration, we have decided to increase
-O2 inlining limit to 200 for C++ code.
Modified:
dragonegg/trunk/llvm-backend.cpp
Modified: dragonegg/trunk/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/llvm-backend.cpp?rev=88777&r1=88776&r2=88777&view=diff
==============================================================================
--- dragonegg/trunk/llvm-backend.cpp (original)
+++ dragonegg/trunk/llvm-backend.cpp Sat Nov 14 04:59:38 2009
@@ -263,11 +263,20 @@
// inliner. gcc has many options that control inlining, but we have decided
// not to support anything like that for llvm-gcc.
static unsigned GuessAtInliningThreshold() {
- unsigned threshold = 200;
- if (!flag_inline_functions)
+ if (optimize_size)
// Reduce inline limit.
- threshold = 50;
- return threshold;
+ return 50;
+
+ if (optimize >= 3)
+ return 200;
+
+ // gcc mark C++ member functions "inline" and inline them more aggressively.
+ // We are not going to do that. Up the inline threshold when compiling for
+ // C++.
+ StringRef LanguageName = lang_hooks.name;
+ if (LanguageName == "GNU C++" || LanguageName == "GNU Objective-C++")
+ return 200;
+ return 50;
}
#ifndef LLVM_TARGET_NAME
More information about the llvm-commits
mailing list