[LLVMdev] RFC: Binary format for instrumentation based profiling data

Diego Novillo dnovillo at google.com
Thu Mar 13 05:48:19 PDT 2014


On Wed, Mar 12, 2014 at 9:09 PM, Justin Bogner <mail at justinbogner.com> wrote:

> Functions are represented by strings, determined by the part of the
> frontend that both generates and uses this data.  In our case, these are
> generally whatever clang thinks of as the function's name, with minor
> details added to disambiguate names that aren't necessarily unique.

Why not just use mangled names here? No need to add minor details, nor
ad-hoc disambiguation. If you're already using mangled names, then I'm
not sure why we need disambiguating details.

> The counter data is simply an array of unsigned 64 bit values.  Given an
> offset found in the index, a sequence follows:
>
>    <function hash> <number of counters> <counters...>
>
> This is all of the data needed for a given function.

How are counters represented? Are these line numbers together with the
counter? Basic blocks? Edges?

I wonder if it would make sense to use the existing gcov format for
this. OTOH, we could provide a converter in the Profile library.


Thanks. Diego.



More information about the llvm-dev mailing list