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}  | 

