[PATCH] D15163: Attach maximum function count to Module when using PGO mode.
Xinliang David Li via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 14 15:26:23 PST 2015
On Fri, Dec 11, 2015 at 6:19 PM, Justin Bogner <mail at justinbogner.com> wrote:
> Easwaran Raman <eraman at 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().
The reader does not know about module context. I think it is better to
put this in CodeGenModule constructor when PGOReader is created.
David
>
>> EmitCtorList(GlobalCtors, "llvm.global_ctors");
>> EmitCtorList(GlobalDtors, "llvm.global_dtors");
>> EmitGlobalAnnotations();
>>
More information about the cfe-commits
mailing list