libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

commit 5538ddaf3b91eb03f16c46d11cfa81344abbb2a4
parent 82c38936faffb74aae21997df1fed221429bf238
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date:   Wed, 12 Aug 2026 11:39:45 +0200

mhd_assume: fixed warnings in code and detection in configure

Diffstat:
Mconfigure.ac | 4+++-
Msrc/mhd2/mhd_assume.h | 15++++++++++++++-
2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -1824,7 +1824,9 @@ AC_CACHE_CHECK([for 'assume' hint keywords supported by $CC],[mhd_cv_cc_kwd_assu [ CFLAGS="${CFLAGS_ac} ${user_CFLAGS} ${errattr_CFLAGS}" mhd_cv_cc_kwd_assume="none" - for keyword_chk in '__attribute__((assume(statement)))' '__builtin_assume(statement)' '[[assume(statement)]]' '__assume(statement)' + for keyword_chk in ['__attribute__((assume(statement)))' '__builtin_assume(statement)' \ + '[[gnu::assume(statement)]]' '[[assume(statement)]]' '[[clang::assume(statement)]]' \ + '__assume(statement)'] do AC_LINK_IFELSE([ AC_LANG_SOURCE([[ diff --git a/src/mhd2/mhd_assume.h b/src/mhd2/mhd_assume.h @@ -65,7 +65,20 @@ */ #ifdef NDEBUG # ifdef MHD_ASSUME_KEYWORD -# define mhd_ASSUME(statement) MHD_ASSUME_KEYWORD ((statement)) +# if defined(__GNUC__) && (__GNUC__ + 0 >= 5) && \ + !defined(__clang__) && !defined(__llvm__) +/* GCC requires mutes of two warnings: "mixed declarations and code" and + "'externally_visible' attribute have effect only on public objects". + Both warnings believed to be GCC bugs and reported to GCC bugtracker: + 127043 and 127044. */ +# define mhd_ASSUME(statement) \ + do { _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wattributes\"") \ + MHD_ASSUME_KEYWORD ((statement)); \ + _Pragma ("GCC diagnostic pop") } while (0) +# else /* Not GCC or GCC < 5 */ +# define mhd_ASSUME(statement) MHD_ASSUME_KEYWORD ((statement)) +# endif /* Not GCC or GCC < 5 */ # elif defined(MHD_UNREACHABLE_KEYWORD) # define mhd_ASSUME(statement) \ do { if (! (statement)) mhd_UNREACHABLE (); } while (0)