diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-02-04 03:43:38 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-02-04 13:16:59 +0100 |
commit | 45f25f7e0b3f105faebf5e215e5c128346463046 (patch) | |
tree | 658cd7ff2874f3ff3fa98a9279cf5f8e5737463a | |
parent | f2c6164b04709b83b60483642ed9b6f33cf01951 (diff) | |
download | rneovim-45f25f7e0b3f105faebf5e215e5c128346463046.tar.gz rneovim-45f25f7e0b3f105faebf5e215e5c128346463046.tar.bz2 rneovim-45f25f7e0b3f105faebf5e215e5c128346463046.zip |
build: PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES
On Travis CI, -Wmissing-prototypes gives strange error:
In file included from ../src/nvim/eval.c:5965:
/home/travis/build/neovim/neovim/build/src/nvim/auto/funcs.generated.h.gperf:215:1: error: conflicting types for 'find_internal_func_gperf'
find_internal_func_gperf (register const char *str, register unsigned int len)
^
../src/nvim/eval.c:5962:20: note: previous declaration is here
const VimLFuncDef *find_internal_func_gperf(register const char *str,
^
-rw-r--r-- | src/nvim/assert.h | 6 | ||||
-rw-r--r-- | src/nvim/eval.c | 6 | ||||
-rw-r--r-- | src/nvim/macros.h | 21 |
3 files changed, 26 insertions, 7 deletions
diff --git a/src/nvim/assert.h b/src/nvim/assert.h index 6e8e57c183..34734f294d 100644 --- a/src/nvim/assert.h +++ b/src/nvim/assert.h @@ -80,7 +80,7 @@ # undef STATIC_ASSERT_PRAGMA_END # define STATIC_ASSERT_PRAGMA_END \ - _Pragma("GCC diagnostic pop") \ + _Pragma("GCC diagnostic pop") // the same goes for clang in C99 mode, but we suppress a different warning #elif defined(__clang__) && __has_extension(c_static_assert) @@ -90,11 +90,11 @@ # undef STATIC_ASSERT_PRAGMA_START # define STATIC_ASSERT_PRAGMA_START \ _Pragma("clang diagnostic push") \ - _Pragma("clang diagnostic ignored \"-Wc11-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc11-extensions\"") # undef STATIC_ASSERT_PRAGMA_END # define STATIC_ASSERT_PRAGMA_END \ - _Pragma("clang diagnostic pop") \ + _Pragma("clang diagnostic pop") // TODO(aktau): verify that this works, don't have MSVC on hand. #elif _MSC_VER >= 1600 diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 8ca764ba68..4ab699cdb7 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -5958,11 +5958,9 @@ static int get_env_tv(char_u **arg, typval_T *rettv, int evaluate) #pragma function (floor) #endif -// silence -Wmissing-prototypes for funcs.generated.h -const VimLFuncDef *find_internal_func_gperf(register const char *str, - register size_t len); - +PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES # include "funcs.generated.h" +PRAGMA_DIAG_POP #endif /* diff --git a/src/nvim/macros.h b/src/nvim/macros.h index d447bff765..61009528a8 100644 --- a/src/nvim/macros.h +++ b/src/nvim/macros.h @@ -198,4 +198,25 @@ # define IO_COUNT(x) (x) #endif +/// +/// PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES +/// +#if defined(__clang__) && __clang__ == 1 +# define PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wmissing-prototypes\"") +# define PRAGMA_DIAG_POP \ + _Pragma("clang diagnostic pop") +#elif defined(__GNUC__) +# define PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wmissing-prototypes\"") +# define PRAGMA_DIAG_POP \ + _Pragma("GCC diagnostic pop") +#else +# define PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES +# define PRAGMA_DIAG_POP +#endif + + #endif // NVIM_MACROS_H |