[LLVMdev] RFC: Binary format for instrumentation based profiling data
Justin Bogner
mail at justinbogner.com
Thu Mar 13 09:48:07 PDT 2014
Bob Wilson <bob.wilson at apple.com> writes:
> On Mar 13, 2014, at 5:48 AM, Diego Novillo <dnovillo at google.com> wrote:
>
>> 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.
>
> We need to prepend the file name to distinguish functions with local
> linkage. Also, Objective-C methods do not get mangled, so we don’t
> want to say that we just use the mangled names.
Notably, we do use mangled names where we can, and we only add anything
in cases where it isn't enough.
>>> 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?
>
> There are no line numbers, basic blocks, or edges. It is just a
> sequence of counters that the front-end knows how to map to the code
> (the same as with our current textual file format).
>
>>
>> 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.
>
> This is pretty clearly a different format from gcov, and I don’t see
> how we could convert between them. But, I agree that it would be nice
> to collect the code for handling different kinds of profile formats in
> one library, even if those file formats are not interchangeable.
More information about the llvm-dev
mailing list