diff options
author | Alejandro Colomar <alx.manpages@gmail.com> | 2022-03-11 01:59:24 +0100 |
---|---|---|
committer | Alejandro Colomar <alx.manpages@gmail.com> | 2022-04-27 01:14:22 +0200 |
commit | 0b79735b503cc0a35062799a8ac45f169f0af0f7 (patch) | |
tree | b2cc62f7135dd8facd060fbcbab6fd78ba7de7d8 | |
parent | a3d19f71a205d31ce141dcfd8880f7ed13bd65e5 (diff) | |
download | unit-0b79735b503cc0a35062799a8ac45f169f0af0f7.tar.gz unit-0b79735b503cc0a35062799a8ac45f169f0af0f7.tar.bz2 |
Added NXT_MAYBE_UNUSED for __attribute__((__unused__)).
When testing some configurations of compilers and OSes, I noticed
that clang(1) 13 on Debian caused a function to be compiled but
unused, and the compiler triggered a compile error.
To avoid that error, use __attribute__((__unused__)). Let's call
our wrapper NXT_MAYBE_UNUSED, since it describes itself more
precisely than the GCC attribute name. It's also the name that
C2x (likely C23) has given to the standard attribute, which is
[[maybe_unused]], so it's also likely to be more readable because
of that name being in ISO C.
-rw-r--r-- | auto/clang | 18 | ||||
-rw-r--r-- | src/nxt_clang.h | 11 | ||||
-rw-r--r-- | src/nxt_conf_validation.c | 3 |
3 files changed, 31 insertions, 1 deletions
@@ -176,3 +176,21 @@ nxt_feature_test="struct s { return 1; }" . auto/feature + + +nxt_feature="GCC __attribute__ unused" +nxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_UNUSED +nxt_feature_run= +nxt_feature_incs= +nxt_feature_libs= +nxt_feature_test="static void f(void) __attribute__ ((__unused__)); + + static void f(void) + { + return; + } + + int main(void) { + return 0; + }" +. auto/feature diff --git a/src/nxt_clang.h b/src/nxt_clang.h index a10de08a..26afba7a 100644 --- a/src/nxt_clang.h +++ b/src/nxt_clang.h @@ -132,6 +132,17 @@ nxt_prefetch(a) #endif +#if (NXT_HAVE_GCC_ATTRIBUTE_UNUSED) + +#define NXT_MAYBE_UNUSED __attribute__((__unused__)) + +#else + +#define NXT_MAYBE_UNUSED + +#endif + + #if (NXT_HAVE_BUILTIN_POPCOUNT) #define nxt_popcount __builtin_popcount diff --git a/src/nxt_conf_validation.c b/src/nxt_conf_validation.c index 4dd46dd8..876c5bbc 100644 --- a/src/nxt_conf_validation.c +++ b/src/nxt_conf_validation.c @@ -77,7 +77,8 @@ static nxt_int_t nxt_conf_vldt_error(nxt_conf_validation_t *vldt, static nxt_int_t nxt_conf_vldt_var(nxt_conf_validation_t *vldt, nxt_str_t *name, nxt_str_t *value); nxt_inline nxt_int_t nxt_conf_vldt_unsupported(nxt_conf_validation_t *vldt, - nxt_conf_value_t *value, void *data); + nxt_conf_value_t *value, void *data) + NXT_MAYBE_UNUSED; static nxt_int_t nxt_conf_vldt_mtypes(nxt_conf_validation_t *vldt, nxt_conf_value_t *value, void *data); |