<div dir="ltr"><div>Do you need to output instrumented C source code?  Do you want to run before or after optimizations?  Do you want to see register spills or not?</div><div><br></div>If you want to instrument control flow and loads and stores, then you probably want to instrument LLVM IR.  There are examples of this kind of thing in llvm/lib/Transforms/Instrumentation, like the sanitizers.  However, LLVM no longer has a C backend, so you won't be able to get C source code back out without some effort.</div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jan 22, 2014 at 9:16 AM, Chris Jake <span dir="ltr"><<a href="mailto:kris.mani.123@gmail.com" target="_blank">kris.mani.123@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hello,</div><div><br></div><div>I need some help in understanding few things related to llvm/clang. </div>
<div><br></div><div>What I want to do is to take a C source code and then get some information from source code like the number of branches, load/store count etc. and then instrument the source code with this obtained information. At the moment, I can think of 2 approaches:</div>

<div><br></div><div>(1) Clang: Generate AST from the source code, obtain these counts (if it is possible) from AST traversal and do then do transformations on AST to generate instrumented source code so that I can use gcc later.</div>

<div><br></div><div>(2) LLVM: Emit bitcode file from clang. Write an analysis pass to count these values and then using Transformation pass, add these values to thr IR  and then, if possible, generate instrumented source code.</div>

<div><br></div><div>Can someone kindly suggest which option is better as both of these approaches deal at different levels.  Any pointers to some sample codes would be really helpful to me.</div><div><br></div><div>
Thanks,</div><div>Kris</div></div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>