[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