<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Oct 2, 2014 at 5:18 PM, Kazuho Oku <span dir="ltr"><<a href="mailto:kazuhooku@gmail.com" target="_blank">kazuhooku@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">Hi,<div><br></div><div>Recently I have started writing a preprocessor that wraps the C preprocessor for optimizing calls to sprintf, since it is the one of the bottlenecks of my application.</div><div><a href="https://github.com/kazuho/qrintf" target="_blank">https://github.com/kazuho/qrintf</a></div><div><br clear="all"><div>For GCC, it was easy for me to override the default C preprocessor, by using its `-no-integrated-cpp` and `-wrapper` options (how I have done it can be found in the `qrinf-gcc` and `qrintf-gcc-wrapper` files included in the above repository).</div><div><br></div><div>However I have so far been unable to find a similar command-line option for Clang.  Is there any way to post-process the output of the preprocessor in Clang?  Or do I need to modify the source code of Clang itself?</div><div><br></div><div>Thank you in advance.</div><div><br></div><div>PS. BTW it would be great if compile-time optimization of sprintf goes into Clang.  Is there any chance of such possibility?</div></div></div></blockquote><div><br></div><div>In the general case, it's not possible to optimize sprintf fully, because its behavior depends on the current locale (this affects %d and %u, which it looks like you optimize) and it might have libc-specific extensions, but LLVM does optimize in some simple cases: for instance, a sprintf containing no % is optimized into memcpy. I expect patches would be accepted to implement further cases, such as handling %s and %c.</div></div></div></div>