[LLVMdev] Questions about LLVM PGO and autoFDO
Justin Bogner
justin at justinbogner.com
Mon May 12 10:32:03 PDT 2014
On Monday, May 12, 2014, 猫妖 <spcatman at qq.com> wrote:
> Hi, all
>
> Recently I'm trying to use LLVM PGO and autoFDO. However I have some
> problems in the process.
> LLVM source code is updated on April 9th. Operating system is SUSE
> x86_64
>
> 1. Problems in instrumentation based PGO:
> clang -O2 -fprofile-instr-generate test.c -o a.out
> ./a.out (then default.profraw is generated)
> clang -O2 -fprofile-instr-use=default.profraw test.c -o a.out
> error: pgo data file has malformed function entry
> I found that the run-time function "writeFile" in InstrProfilingFile.cpp
> didn't write '\n'.
> But when parsing the profile data, in CodeGenPGO.cpp line 56, it tried
> to find '\n' like below:
> CurPtr = strchr(CurPtr, '\n');
> if (!CurPtr) {
> ReportBadPGOData(CGM, "pgo data file has malformed function entry");
> return;
> }
>
Sorry that this isn't documented very well. I'm working on some
documentation for the instrumentation based profiling that should make this
less of a guessing game.
You need to run `llvm-profdata merge` on the raw profile data to generate
the format that clang understands. Something like:
llvm-profdata merge default.profraw -o default.profdata
Then use default.profdata as the input to -fprofile-instr-use.
> 2. Problems in autoFDO:
> Actually the problem happened in using create_llvm_prof, transformation
> is failed.
> clang -O2 -g test.c -o a.out
> perf record -b ./a.out (perf version is 0.0.2, "-b" option is not
> recognized, why?)
> change to: perf record ./a.out (so perf.data is generated)
> create_llvm_prof --binary=./a.out --out=code.prof (it read a.out and
> perf.data)
> error: Malformed .note.gnu.build-id section
> no build id found in the binary
> it seems that a.out has no build id.
>
> Someone who can help me?
>
> Thanks,
> Kaidong Chen
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140512/471b8cbf/attachment.html>
More information about the llvm-dev
mailing list