When a header file invokes _GL_INLINE_HEADER_BEGIN but not _GL_INLINE_HEADER_END, the effect is that two pragmas
_Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ remain in effect until the end of the compilation unit. Which is not desirable. This patch adds a syntax-check against this mistake, and fixes the two existing offenders. 2023-04-13 Bruno Haible <br...@clisp.org> ialloc, gethrxtime: Restore GCC diagnostics options. * lib/ialloc.h: Invoke _GL_INLINE_HEADER_END. * lib/xtime.h: Likewise. * Makefile (sc_check_GL_INLINE_HEADER_use): New rule. diff --git a/Makefile b/Makefile index 76e3b5cc54..d0906b2315 100644 --- a/Makefile +++ b/Makefile @@ -227,6 +227,19 @@ sc_check_config_h_reminder: exit $$fail +# Ensure that .h files that invoke _GL_INLINE_HEADER_BEGIN also invoke +# _GL_INLINE_HEADER_END. Otherwise, some GCC diagnostics remain turned off +# for the rest of the compilation unit. +sc_check_GL_INLINE_HEADER_use: + fail=0; \ + for file in `grep -l -F -w _GL_INLINE_HEADER_BEGIN lib/*.h lib/*/*.h`; do \ + grep -l -F -w _GL_INLINE_HEADER_END $$file >/dev/null \ + || { echo "File $$file lacks an invocation of _GL_INLINE_HEADER_END."; \ + fail=1; \ + }; \ + done; \ + exit $$fail + # Ensure that the copyright statements in files and in the module descriptions # are consistent. sc_check_copyright: diff --git a/lib/ialloc.h b/lib/ialloc.h index 8d49887b6a..22f57a47d8 100644 --- a/lib/ialloc.h +++ b/lib/ialloc.h @@ -112,4 +112,6 @@ ireallocarray (void *p, idx_t n, idx_t s) } #endif +_GL_INLINE_HEADER_END + #endif diff --git a/lib/xtime.h b/lib/xtime.h index 84a8a5db9a..50eb4f421e 100644 --- a/lib/xtime.h +++ b/lib/xtime.h @@ -87,4 +87,6 @@ xtime_nsec (xtime_t t) } #endif +_GL_INLINE_HEADER_END + #endif