[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