Easwaran Raman <era...@google.com> writes:
> eraman updated this revision to Diff 42549.
> eraman added a comment.
>
> Added a test case.
>
>
> Repository:
>   rL LLVM
>
> http://reviews.llvm.org/D15163
>
> Files:
>   lib/CodeGen/CodeGenModule.cpp
>   test/CodeGen/pgo-max-function-count.c
>
> Index: test/CodeGen/pgo-max-function-count.c
> ===================================================================
> --- /dev/null
> +++ 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

The clang tests are run in environments where the generated binaries
can't run on the host system, so you can't do this. Instead of this kind
of full integration test you should provide handwritten profile data to
feed into the test. See the tests in test/Profile for examples, and also
consider putting this test in that directory with the others.

> +// 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}
> Index: lib/CodeGen/CodeGenModule.cpp
> ===================================================================
> --- lib/CodeGen/CodeGenModule.cpp
> +++ lib/CodeGen/CodeGenModule.cpp
> @@ -376,6 +376,9 @@
>    }
>    if (PGOReader && PGOStats.hasDiagnostics())
>      PGOStats.reportDiagnostics(getDiags(), getCodeGenOpts().MainFileName);
> +  // In PGO mode, attach maximum function count to the module.

This comment isn't helpful - it's just stating exactly what the code
that follows does.

> +  if (PGOReader)
> +    
> getModule().setMaximumFunctionCount(PGOReader->getMaximumFunctionCount());

It would read better to fold the two `if (PGOReader)` checks
together. ie:

  if (PGOReader) {
    getModule().setMaximumFunctionCount(PGOReader->getMaximumFunctionCount());
    if (PGOStats.hasDiagnostics())
      PGOStats.reportDiagnostics(getDiags(), getCodeGenOpts().MainFileName);
  }

That said, wouldn't it make more sense to set this within PGOReader
itself? It feels pretty awkward for this to be happening in
CodeGenModule::Release().

>    EmitCtorList(GlobalCtors, "llvm.global_ctors");
>    EmitCtorList(GlobalDtors, "llvm.global_dtors");
>    EmitGlobalAnnotations();
>
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to