Parcourir la source

Attach maximum function count to Module when using PGO mode

This sets the maximum entry count among all functions in the program to the
module using module flags. This allows the optimizer to use this information.

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@255397 91177308-0d34-0410-b5e6-96231b3b80d8
Easwaran Raman il y a 9 ans
Parent
commit
94f51f428a
2 fichiers modifiés avec 12 ajouts et 0 suppressions
  1. 3 0
      lib/CodeGen/CodeGenModule.cpp
  2. 9 0
      test/CodeGen/pgo-max-function-count.c

+ 3 - 0
lib/CodeGen/CodeGenModule.cpp

@@ -376,6 +376,9 @@ void CodeGenModule::Release() {
   }
   if (PGOReader && PGOStats.hasDiagnostics())
     PGOStats.reportDiagnostics(getDiags(), getCodeGenOpts().MainFileName);
+  // In PGO mode, attach maximum function count to the module.
+  if (PGOReader)
+    getModule().setMaximumFunctionCount(PGOReader->getMaximumFunctionCount());
   EmitCtorList(GlobalCtors, "llvm.global_ctors");
   EmitCtorList(GlobalDtors, "llvm.global_dtors");
   EmitGlobalAnnotations();

+ 9 - 0
test/CodeGen/pgo-max-function-count.c

@@ -0,0 +1,9 @@
+// RUN: %clang -fprofile-generate -o %t -O2 %s
+// RUN: env LLVM_PROFILE_FILE=%t.profraw  %t
+// RUN: llvm-profdata merge -o %t.profdata %t.profraw
+// RUN: %clang -fprofile-use=%t.profdata -o - -S -emit-llvm %s | FileCheck %s
+// Check
+int main() {
+  return 0;
+}
+// CHECK: !{{[0-9]+}} = !{i32 1, !"MaxFunctionCount", i32 1}