<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Fri, Jun 2, 2017 at 12:36 AM Boris Kolpackov <<a href="mailto:boris@codesynthesis.com">boris@codesynthesis.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi David,<br>
<br>
David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>> writes:<br>
<br>
> So could you outline (show a small/complete example with source, commands,<br>
> etc) what you're trying to do?<br>
<br>
In build2 (build system I am working on) we have the ability to specify<br>
that a source file is preprocessed to a certain degree. This is used to<br>
speed things up.</blockquote><div><br>Does this actually speed up clang in an observable way?<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> While currently having translation units that no longer<br>
require preprocessing is not very common, with modules (and modularized<br>
standard library) this situation will become a lot more plausible. So we<br>
want to be ready.<br></blockquote><div><br></div><div>What makes it more likely for modularized code? In the sense that many more source files won't /need/ to use the preprocessor, so they're sort of quasi-preprocessed (trivially, in the sense that there's no work to do) already? <br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
If the user says that certain TUs are fully preprocessed, then build2<br>
passes this information on to the compiler via the -x option. So for C<br>
we say the source is '-x cpp-output' and for C++ -- '-x c++-cpp-output'.<br>
<br>
Now in Clang module interface units have to be compiled as '-x c++-module',<br>
not '-x c++'. So we also need '-x c++-module-cpp-output'.<br>
<br>
BTW, it is not clear why c++-module is needed (and it is needed -- I tried<br>
to compile as just c++ and things didn't go well). Perhaps now that Clang<br>
use the 'export module M;' syntax c++-module is no longer necessary?<br>
<br>
Thanks,<br>
Boris<br>
</blockquote></div></div>