[Bug 261310] The libgen.h sources use C11-specific features under e.g. -std=gnu99, causing a -Wc11-extensions warning
Date: Tue, 18 Jan 2022 15:43:49 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261310 Bug ID: 261310 Summary: The libgen.h sources use C11-specific features under e.g. -std=gnu99, causing a -Wc11-extensions warning Product: Base System Version: CURRENT Hardware: Any URL: https://lore.kernel.org/git/patch-1.1-06cc12be94d-2022 0118T151234Z-avarab@gmail.com/ OS: Any Status: New Severity: Affects Many People Priority: --- Component: misc Assignee: bugs@FreeBSD.org Reporter: avarab@gmail.com CC: ed@FreeBSD.org, fuz@fuz.su Created attachment 231131 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=231131&action=edit "fix" the issue with _Generic() in libgen.h by ignoring -Wc11-extension The $subject issue was encountered when testing a pre-release of git. I've submitted a workaround for it in $url. As noted in $url I think this is a regression in the 2014-era commit by ed@FreeBSD.org to sys/cdefs.h (https://github.com/freebsd/freebsd-src/commit/62b7f85d4749). Since then the __generic() wrapper for the C11-_Generic() has checked the __STDC_VERSION__ *or* __has_extension(c_generic_selections). The problem being that the latter is a way to ask if the compiler supports this at all, and not whether the current -std=* would emit a warning about it conflicting with the currently selected C version. There's probably a less crappy way to solve this, but I can't think of one that isn't the attached patch. I.e. the issue is that both GCC and Clang don't seem to have a way to request the C version in effect for the purposes of warnings being emitted, so we can just quiet the relevant warning. If such a thing exists I haven't found it. I'm not sure if FreeBSD still cares about GCC, but if so the added pragma lines also need duplicated "#pragma GCC...". -- You are receiving this mail because: You are the assignee for the bug.