[llvm-commits] [llvm-gcc-4.2] r85982 - /llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
Evan Cheng
evan.cheng at apple.com
Tue Nov 3 16:08:13 PST 2009
Author: evancheng
Date: Tue Nov 3 18:08:13 2009
New Revision: 85982
URL: http://llvm.org/viewvc/llvm-project?rev=85982&view=rev
Log:
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:
llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=85982&r1=85981&r2=85982&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Tue Nov 3 18:08:13 2009
@@ -352,11 +352,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 (optimize_size || optimize < 3)
+ 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;
}
void llvm_initialize_backend(void) {
More information about the llvm-commits
mailing list