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

Re: [PATCH] merge-file: fix build warning with gcc 4.8.5

From
Jeff King <peff@peff.net>
Date
Jul 29, 2022, 19:53 UTC
Message-ID
<YuQ60ZUPBHAVETD7@coredump.intra.peff.net>
In-Reply-To
<xmqqbkt7api9.fsf@gitster.g>
On Fri, Jul 29, 2022 at 08:48:46AM -0700, Junio C Hamano wrote:
Show 8 quoted lines
> I think the concensus was that we should squelch the false warning
> on older compilers with -Wno-missing-braces, but then the discussion
> has stalled by a suggestion to introduce a way to detect older
> compilers that is different from how we do so at the same time, and
> went nowhere.
> 
> Hopefully we can add a simple -Wno-* without waiting for whole
> config.mak thing getting revamped this time?
Perhaps this?
-- >8 --
Subject: [PATCH] config.mak.dev: squelch -Wno-missing-braces for older gcc
Versions of gcc prior to 4.9 complain about an initialization like:
  struct inner { int x; };
  struct outer { struct inner; };
  struct outer foo = { 0 };
and insist on:
  struct outer foo = { { 0 } };

Newer compilers handle this just fine. And ignoring the window even on older compilers is fine; the resulting code is correct, but we just get caught by -Werror.

Let's relax this for older compilers to make developer lives easier (we don't care much about non-developers on old compilers; they may see a warning, but it won't stop compilation).

Signed-off-by: Jeff King <peff@peff.net>
---
Tested on a debian jessie chroot using gcc-4.8 and 4.9. Though note that
you also need to manually specify -std=gnu99 to get it to work at all
with those compilers these days! So I kind of wonder if it's even worth
catering to their warnings automatically.
 config.mak.dev | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/config.mak.dev b/config.mak.dev
index 335efd4620..b9878a4994 100644
--- a/config.mak.dev
+++ b/config.mak.dev
@@ -59,9 +59,13 @@ endif
 
 # uninitialized warnings on gcc 4.9.2 in xdiff/xdiffi.c and config.c
 # not worth fixing since newer compilers correctly stop complaining
+#
+# Likwise, gcc older than 4.9 complains about initializing a
+# struct-within-a-struct using just "{ 0 }"
 ifneq ($(filter gcc4,$(COMPILER_FEATURES)),)
 ifeq ($(filter gcc5,$(COMPILER_FEATURES)),)
 DEVELOPER_CFLAGS += -Wno-uninitialized
+DEVELOPER_CFLAGS += -Wno-missing-braces
 endif
 endif
 
-- 
2.37.1.804.g1775fa20e0
Previous: Junio C HamanoNext: Jeff King
Message 3 of 11 in “merge-file: fix build warning with gcc 4.8.5”
  1. merge-file: fix build warning with gcc 4.8.5Đoàn Trần Công Danh, Jul 29, 2022
  2. Junio C HamanoJul 29, 2022
  3. Jeff KingJul 29, 2022
  4. Jeff KingJul 29, 2022
  5. Eric SunshineJul 29, 2022
  6. Jeff KingJul 29, 2022
  7. Junio C HamanoJul 29, 2022
  8. Đoàn Trần Công DanhJul 30, 2022
  9. Jeff KingJul 30, 2022
  10. brian m. carlsonJul 30, 2022
  11. Jeff KingJul 30, 2022

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.