[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