On 18 March 2015 at 19:22, John Snow <js...@redhat.com> wrote:
> There's one case of error here that's interesting that ccache unearths:
>
> we use a gnu extension to give return values to compound statement blocks,
> then wrap these blocks into macros as if they were functions.
>
> The practical outcome here is that these blocks have return codes that we
> often don't check, so clang will spit out "unused value" warnings if we
> compile these after preprocessing, like ccache will tend to do.
>
> This warning is potentially valid: if these calls can fail, we should
> probably either be asserting that a failure did not occur OR we should
> switch to a variant without a return code, if failure is impossible in these
> locations.
>
> An example of this is in linux-user/elfload.c where we define the
> NEW_AUX_ENT() macro which in turn uses the put_user_ual(val, sp) macro. When
> this is expanded, it turns into a compound statement where we discard the
> expression result, so clang whines.
>
> Of course, this all goes away if you disable ccache, but is it worth
> adjusting this particular usage anyway?

I agree that ideally we wouldn't do that, but why is this
only visible via ccache? If ccache creates warnings that
aren't visible when directly running the c compiler then
that's a bug in ccache even if the warnings are in theory
interesting.

-- PMM

Reply via email to