<p dir="ltr">Hi,</p>
<p dir="ltr">I'd like to propose a GSoC project with the goal of implementing a library for profiling instrumentation of LLVM IR.</p>
<p dir="ltr">Currently, my idea is make the library general enough to insert arbitrary code or a call to a void(*)(void) before or after reads/writes from a specified variable or in the prologue/epilogue of a specified function.</p>

<p dir="ltr">I would like to build more than this on top of the general interface, but a lot of profiling specific code is also above LLVM's level, such as getting timestamps to measure time spent in a function or outputting results to a file (like gcc -pg).</p>

<p dir="ltr">As a compromise, I could implement the higher level profiling instrumentation in clang. The goal of this part of the project would be to build on top of the general library to the point that clang could support gprof profiling.</p>

<p dir="ltr">The instrumentation would be inserted by an LLVM pass.</p>
<p dir="ltr">I'm posting here to get a feel of what you guys think before I advance in the process and to receive any and all suggestions with an open mind. And also to see if there are any mentors willing guide me in this.</p>

<p dir="ltr">Thanks for reading,<br>
Tyler Hardin</p>