On Wednesday 11 of July 2012, Max Horn wrote:
On 11.07.2012, at 02:34, Martin Pool wrote:
On 5 July 2012 21:35, Mike Frysinger vap...@gentoo.org wrote:
On Wednesday 04 July 2012 09:53:46 Max Horn wrote:
err, -I/-isystem/-D/-U/etc... are preprocessor flags and are valid when
in preprocessor mode (-E). i don't know if clang is broken, or your
is incorrect, but certainly that behavior you describe is wrong.
I agree with you there, Mike,
As do I, actually -- sorry, my email was indeed nonsense and confused. What
I *meant* was that on the second run (the one without -E, with preprocessed
data as input), clang prints out warnings.
Now, I am not saying that ccache is doing anything wrong here,
But you probably could. -I, -D, -U etc. are preprocessor options and not
compiler options, and the preprocessor is (at least in the separate
compilation steps theory) not run when the driver is fed preprocessed source.
but I think the bug originally described in
https://bugzilla.samba.org/show_bug.cgi?id=8460 could possibly be valid.
If you are compiling from a .i or .ii file, the -D and -I options can't
have any effect. It's reasonable for clang to emit a warning about it,
and it would be reasonable for ccache to strip those options when
compiling a preprocessed file.
Aye, if that would be acceptable for the ccache authors, that would be the
best solution I think.
The best option is to use CCACHE_CPP2 with Clang. Giving Clang preprocessed
source causes a number of small problems, such as some warnings not being
suppressed or error/warning messages quoting modified source code. As a
side-effect, this problem with preprocessor options will not exist with
CCACHE_CPP2 either. It is a question how much not using CCACHE_CPP2 with
Clang would improve performance anyway.
ccache mailing list