git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] fix some clang warnings

From
Jeff King <peff@peff.net>
Date
Jan 16, 2013, 18:00 UTC
Message-ID
<20130116180041.GC27525@sigill.intra.peff.net>
In-Reply-To
<20130116175057.GB27525@sigill.intra.peff.net>
On Wed, Jan 16, 2013 at 09:50:57AM -0800, Jeff King wrote:
> I'm confused, though, why your patch does not have a matching update to
> the opterror macro in parse-options.h. It uses exactly the same
> technique. Does it not generate a warning?
Ah, I think I see why not.

It is not about the macro itself, but rather the callsites that do not return error, but call it for its printing side effect. It seems that clang -Wunused-value is OK with unused values from functions being discarded, but not with constants. So:

  int foo();
  void bar()
  {
    foo(); /* ok */
    1; /* not ok */
    (foo(), 1); /* not ok */
  }

The first one is OK (I think it would fall under -Wunused-result under either compiler). The middle one is an obvious error, and caught by both compilers. The last one is OK by gcc, but clang complains.

So opterror does not happen to generate any warnings, because we do not ever use it in a void context. It should probably be marked the same way, though, as future-proofing.

Show 6 quoted lines
> The commit message should probably be along the lines of:
> [...]
>   However, clang also defines __GNUC__, but generates warnings (due to
>   throwing away the return value from the first half of the macro). We
>   can squelch the warning by turning off these macros when clang is in
>   use.
So a more accurate description would be:
  However, clang also defines __GNUC__, but generates warnings with
  -Wunused-value when these macros are used in a void context, because
  the constant "-1" ends up being useless. Gcc does not complain about
  this case (though it is unclear if it is because it is smart enough to
  see what we are doing, or too dumb to realize that the -1 is unused).
  We can squelch the warning by just disabling these macros when clang
  is in use.
-Peff
Previous: Jeff KingNext: Jeff King
Message 8 of 35 in “fix some clang warnings”
  1. fix some clang warningsMax Horn, Jan 16, 2013
  2. Jeff KingJan 16, 2013
  3. Junio C HamanoJan 16, 2013
  4. Antoine PelisseJan 16, 2013
  5. John KeepingJan 16, 2013
  6. Max HornJan 16, 2013
  7. Jeff KingJan 16, 2013
  8. Jeff KingJan 16, 2013
  9. Jeff KingJan 16, 2013
  10. John KeepingJan 16, 2013
  11. Jeff KingJan 16, 2013
  12. Antoine PelisseJan 16, 2013
  13. John KeepingJan 16, 2013
  14. Jeff KingJan 16, 2013
  15. John KeepingJan 16, 2013
  16. John KeepingJan 17, 2013
  17. 1/2 fix clang -Wconstant-conversion with bit fieldsAntoine Pelisse, Jan 16, 2013
  18. 2/2 fix clang -Wtautological-compare with unsigned enumAntoine Pelisse, Jan 16, 2013
  19. Antoine PelisseJan 16, 2013
  20. Antoine PelisseJan 17, 2013
  21. John KeepingJan 17, 2013
  22. combine-diff: suppress a clang warningJohn Keeping, Jan 17, 2013
  23. Linus TorvaldsJan 17, 2013
  24. Antoine PelisseJan 17, 2013
  25. John KeepingJan 17, 2013
  26. Phil HordJan 18, 2013
  27. Linus TorvaldsJan 18, 2013
  28. John KeepingJan 16, 2013
  29. Antoine PelisseJan 16, 2013
  30. Antoine PelisseJan 16, 2013
  31. Junio C HamanoJan 16, 2013
  32. Junio C HamanoJan 16, 2013
  33. Tomas CarneckyJan 16, 2013
  34. Matthieu MoyJan 16, 2013
  35. Miles BaderFeb 1, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.