r256793 - Remove setting of inlinehint and cold attributes based on profile data

Easwaran Raman via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 4 15:32:32 PST 2016


Author: eraman
Date: Mon Jan  4 17:32:28 2016
New Revision: 256793

URL: http://llvm.org/viewvc/llvm-project?rev=256793&view=rev
Log:
Remove setting of inlinehint and cold attributes based on profile data

NFC. These hints are only used for inlining and the inliner now uses
the same criteria to identify hot and cold callees and set appropriate
thresholds without relying on these hints. Hence this removed code is
superfluous.

Differential Revision: http://reviews.llvm.org/D15726


Removed:
    cfe/trunk/test/Profile/c-attributes.c
Modified:
    cfe/trunk/lib/CodeGen/CodeGenPGO.cpp
    cfe/trunk/test/Profile/func-entry.c

Modified: cfe/trunk/lib/CodeGen/CodeGenPGO.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenPGO.cpp?rev=256793&r1=256792&r2=256793&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenPGO.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenPGO.cpp Mon Jan  4 17:32:28 2016
@@ -721,17 +721,7 @@ CodeGenPGO::applyFunctionAttributes(llvm
   if (!haveRegionCounts())
     return;
 
-  uint64_t MaxFunctionCount = PGOReader->getMaximumFunctionCount();
   uint64_t FunctionCount = getRegionCount(nullptr);
-  if (FunctionCount >= (uint64_t)(0.3 * (double)MaxFunctionCount))
-    // Turn on InlineHint attribute for hot functions.
-    // FIXME: 30% is from preliminary tuning on SPEC, it may not be optimal.
-    Fn->addFnAttr(llvm::Attribute::InlineHint);
-  else if (FunctionCount <= (uint64_t)(0.01 * (double)MaxFunctionCount))
-    // Turn on Cold attribute for cold functions.
-    // FIXME: 1% is from preliminary tuning on SPEC, it may not be optimal.
-    Fn->addFnAttr(llvm::Attribute::Cold);
-
   Fn->setEntryCount(FunctionCount);
 }
 

Removed: cfe/trunk/test/Profile/c-attributes.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Profile/c-attributes.c?rev=256792&view=auto
==============================================================================
--- cfe/trunk/test/Profile/c-attributes.c (original)
+++ cfe/trunk/test/Profile/c-attributes.c (removed)
@@ -1,48 +0,0 @@
-// Test that instrumentation based profiling sets function attributes correctly.
-
-// RUN: llvm-profdata merge %S/Inputs/c-attributes.proftext -o %t.profdata
-// RUN: %clang %s -o - -mllvm -disable-llvm-optzns -emit-llvm -S -fprofile-instr-use=%t.profdata | FileCheck %s
-
-extern int atoi(const char *);
-
-// CHECK: hot_100_percent(i32{{.*}}%i) [[HOT:#[0-9]+]]
-void hot_100_percent(int i) {
-  while (i > 0)
-    i--;
-}
-
-// CHECK: hot_40_percent(i32{{.*}}%i) [[HOT]]
-void hot_40_percent(int i) {
-  while (i > 0)
-    i--;
-}
-
-// CHECK: normal_func(i32{{.*}}%i) [[NORMAL:#[0-9]+]]
-void normal_func(int i) {
-  while (i > 0)
-    i--;
-}
-
-// CHECK: cold_func(i32{{.*}}%i) [[COLD:#[0-9]+]]
-void cold_func(int i) {
-  while (i > 0)
-    i--;
-}
-
-// CHECK: attributes [[HOT]] = { inlinehint nounwind {{.*}} }
-// CHECK: attributes [[NORMAL]] = { nounwind {{.*}} }
-// CHECK: attributes [[COLD]] = { cold nounwind {{.*}} }
-
-int main(int argc, const char *argv[]) {
-  int max = atoi(argv[1]);
-  int i;
-  for (i = 0; i < max; i++)
-    hot_100_percent(i);
-  for (i = 0; i < max * 4 / 10; i++)
-    hot_40_percent(i);
-  for (i = 0; i < max * 2 / 10; i++)
-    normal_func(i);
-  for (i = 0; i < max / 200; i++)
-    cold_func(i);
-  return 0;
-}

Modified: cfe/trunk/test/Profile/func-entry.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Profile/func-entry.c?rev=256793&r1=256792&r2=256793&view=diff
==============================================================================
--- cfe/trunk/test/Profile/func-entry.c (original)
+++ cfe/trunk/test/Profile/func-entry.c Mon Jan  4 17:32:28 2016
@@ -5,10 +5,10 @@
 
 void foo(void);
 
-// CHECK: @foo() #0 !prof [[FOO:![0-9]+]]
+// CHECK: @foo() #{{[0-9]}} !prof [[FOO:![0-9]+]]
 void foo() { return; }
 
-// CHECK: @main() #1 !prof [[MAIN:![0-9]+]]
+// CHECK: @main() #{{[0-9]}} !prof [[MAIN:![0-9]+]]
 int main() {
   int i;
   for (i = 0; i < 10000; i++) foo();




More information about the cfe-commits mailing list