<div dir="ltr"><div class="gmail_quote">On Sat, Mar 28, 2015 at 10:19 AM Gabor Kozar <<a href="mailto:kozargabor@gmail.com">kozargabor@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><blockquote><div>Otherwise, you can write out the modified files in whatever way you want.<br></div>
</blockquote><div> </div>
</div><div><div>I
 cannot find any way to do that, nor the RefactoringTool, nor the 
Rewriter classes seem to expose any functionality at all to write the modified files anywhere else. How should I go about this (without modifying clang itself)?<br></div></div></blockquote><div><br></div><div>Look at </div><div><a href="http://reviews.llvm.org/diffusion/L/browse/clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp;233488$143">http://reviews.llvm.org/diffusion/L/browse/clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp;233488$143</a></div><div>The Rewriter basically does everything in-memory. In the end, you can take the buffer, and write it to whereever you like (in clang-rename's example it writes optionally to stdout)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div></div><div>
<div> </div>
<blockquote><div>Usually what people want to do is to write the diffs / changes out, instead of the modified files, in that case...<br></div>
</blockquote><div> </div>
</div><div><div>I need to specifically write out the modified files.<br></div></div><div>
<div> </div>
<blockquote><div>Do you need to instrument the /source code/ in particular?<br></div>
</blockquote><div> </div>
</div><div><div>Unfortunately, I do, because I work in an environment where we cannot compile using clang, only GCC. The reasons for this are... interesting, at best, but unfortunately this is what I have to work. I agree with you though, IR-level instrumentation is obviously a much better idea... one that's not feasible in my situation.<br></div></div><div>
<div> </div>
<div><div>---<br></div>
<div>Best regards,<br></div>
<div> </div>
<div>Gábor 'ShdNx' Kozár<br></div>
<div><a href="http://gaborkozar.me" target="_blank">http://gaborkozar.me</a><br></div>
<div> </div>
</div>
<div> </div>
<div> </div>
</div><div><div>On Mon, Mar 16, 2015, at 15:59, David Blaikie wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div> </div>
<div><div> </div>
<div><div>On Sat, Mar 14, 2015 at 4:52 AM, Gabor Kozar <span dir="ltr"><<a href="mailto:kozargabor@gmail.com" target="_blank">kozargabor@gmail.com</a>></span> wrote:<br></div>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><u></u><br></div>
<div><div>I'm working on a clang tool that instruments source code.<br></div>
</div>
</blockquote><div> </div>
<div>Do you need to instrument the /source code/ in particular? The usual approach with other instrumentation (sanitizers, code coverage, etc) is just to instrument the resulting binary (by instrumenting the LLVM IR generated by the frontend - usually during IR generation in the frontend (Clang, most often)) rather than mutating the source (or generating a mutated copy of the source) & then compiling that.<br></div>
<div> </div>
<div>The refactoring tools are really focussed on the scenario of refactoring - where you actually want to modify the original source. (not that they can't be used for other things, just that they might not be the best tool for the job)<br></div>
<div> </div>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>However, I can't seem to find any option to set the output file path, i.e. my tool will always modify the original file, which is not what I want.<br></div>
<div> </div>
<div>Was this a deliberate decision, or am I just missing something?<br></div>
<div> </div>
<div><div>---<br></div>
<div>Best regards,<br></div>
<div> </div>
<div>Gábor 'ShdNx' Kozár<br></div>
<div><a href="http://gaborkozar.me" target="_blank">http://gaborkozar.me</a><br></div>
<div> </div>
</div>
<div> </div>
</div>
<div> </div>
<div>_______________________________________________<br></div>
<div>
cfe-dev mailing list<br></div>
<div> <a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br></div>
<div> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br></div>
<div> </div>
</blockquote></div>
<div> </div>
</div>
</div>
</blockquote><div> </div>
</div>

______________________________<u></u>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">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/<u></u>mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>