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

Bruce Hoult bruce at hoult.org
Thu May 28 06:34:23 PDT 2015


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/7dfa2dc1/attachment.html>


More information about the llvm-dev mailing list