diff options
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 3 | ||||
-rw-r--r-- | clang/test/CodeGen/pgo-max-function-count.c | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 29c5f3eed5a..8d7254904a9 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/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(); diff --git a/clang/test/CodeGen/pgo-max-function-count.c b/clang/test/CodeGen/pgo-max-function-count.c new file mode 100644 index 00000000000..b60a4671eb1 --- /dev/null +++ b/clang/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} |