[llvm-dev] Question about : lprofValueProfNodes

Xinliang David Li via llvm-dev llvm-dev at lists.llvm.org
Tue Dec 19 11:46:02 PST 2017


On Tue, Dec 19, 2017 at 11:31 AM, Vedant Kumar via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi,
>
>
> On Dec 19, 2017, at 10:26 AM, Moshtaghi, Alireza via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> Hi
> This array is defined in compiler-rt: InstrProfilingValue.c but I can’t
> find where it is used?
>
>
> It's used in allocateOneNode(). Incrementing the current vnode pointer
> gives a fresh node (possibly backed by the shared pool).
>
>
> And the comment on it does not say much about why we need it either.
>
>
> It's used to avoid calling malloc(), which David (CC'd) found to be a
> performance improvement.
>
>
Right -- it is used to avoid depending on dynamic memory allocation.  Other
than performance, if heap memory is used, the program may deadlock if
malloc library (such as tcmalloc) is instrumented.

To turn off the behavior, use the following option

-mllvm -vp-static-alloc=false with the instrumentation build.

David



> best,
> vedant
>
> Can someone explain why we need this and where it is used?
>
> /* A shared static pool in addition to the vnodes statically
> * allocated by the compiler.  */
> COMPILER_RT_VISIBILITY ValueProfNode
>     lprofValueProfNodes[INSTR_PROF_VNODE_POOL_SIZE]
> COMPILER_RT_SECTION(COMPILER_RT_SEG INSTR_PROF_VNODES_SECT_NAME_STR);
>
> Thanks
> A
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171219/15badb6d/attachment.html>


More information about the llvm-dev mailing list