[LLVMdev] Easiest way to collect dynamic Instruction execution counts?

Stephen Thomas stephen.warner.thomas at gmail.com
Thu May 28 07:18:05 PDT 2015


Bruce,

Can valgrind give me the execution counts for each Instruction in the LLVM
bitcode?

Thanks,
Steve

On Thu, May 28, 2015 at 9:34 AM, Bruce Hoult <bruce at hoult.org> wrote:

> That seems like a job for valgrind?
>
> Assuming you're on a supported platform, but these days that includes all
> the common Mac/Linux/Android platforms except ARM64.
>
> On Thu, May 28, 2015 at 4:08 PM, Stephen Thomas <
> stephen.warner.thomas at gmail.com> wrote:
>
>> Hi,
>>
>> I'd like a simple and fast way to collect the number of times each
>> Instruction was executed in a given run of the application. As far as I can
>> tell, there are a number of approaches I can take:
>>
>> - Use PIN. This would require using DWARF debug info and Instruction
>> debug info to attempt to map instructions in the binary to instructions in
>> the bitcode; not 100% sure how accurate this will be.
>>
>> - Use llvm-prof. Two questions here. First, I've seen on Stack Overflow
>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__stackoverflow.com_questions_14617067_collecting-2Dllvm-2Dedge-2Dprofiling-2Dwith-2Dllvm-2Dprof&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=HtoNbGGO3zcoVy6n3_8lqn7ZXiNnqiQKim27ER3buUQ&s=kf8XiNx6628Vrx9TCVI4rrnisNDMVf8ZcuKA6V0udhE&e=>
>> an option to `opt` called `--insert-edge-profiling`. However, that option
>> doesn't seem to be available in 3.6? Second, it appears that such profiling
>> only records execution counts at the Function level, not at the individual
>> Instruction level. Is that correct?
>>
>> - Write a new tool similar to AddressSanitizer.
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__clang.llvm.org_docs_AddressSanitizer.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=HtoNbGGO3zcoVy6n3_8lqn7ZXiNnqiQKim27ER3buUQ&s=B48ymTvL2IOafrTkfbB7YJl2y6OdfQtG7_I7dfiuNPU&e=> This
>> may work, but seems like overkill.
>>
>> Is there an easier way to achieve my goal that I'm missing?
>>
>> Thanks,
>> Steve
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150528/c32c588f/attachment.html>


More information about the llvm-dev mailing list