]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Fix for clang Wstrict-bool pragma failing on unpatched clang
authorMarco Bettini <marco.bettini@open-xchange.com>
Mon, 2 May 2022 13:12:26 +0000 (13:12 +0000)
committermartti.rannanjarvi <martti.rannanjarvi@open-xchange.com>
Thu, 19 May 2022 06:25:58 +0000 (06:25 +0000)
Note that clang recognises GCC diagnostic pragmas too,
so there is no need for distinct pragmas in this case

src/lib/event-filter-lexer.l
src/lib/event-filter-parser.y

index 08af117789044b2b0b5d33a4ad3867af324497a2..8df4ddc510da7fa130c999aeadf196bf60521cdf 100644 (file)
         result = event_filter_parser_input_proc(buf, max_size, yyscanner)
 static size_t event_filter_parser_input_proc(char *buf, size_t size, yyscan_t scanner);
 
-#ifdef __clang__
-#pragma clang diagnostic push
-/* ignore "unknown warning" warning if we're using unpatched clang */
-#pragma clang diagnostic ignored "-Wunknown-warning-option"
+#pragma GCC diagnostic push
+
 /* ignore strict bool warnings in generated code */
-#pragma clang diagnostic ignored "-Wstrict-bool"
+#ifdef HAVE_STRICT_BOOL
+#  pragma GCC diagnostic ignored "-Wstrict-bool"
+#endif
 /* ignore sign comparison errors (buggy flex) */
-#pragma clang diagnostic ignored "-Wsign-compare"
-/* ignore unused functions */
-#pragma clang diagnostic ignored "-Wunused-function"
-/* ignore unused parameters */
-#pragma clang diagnostic ignored "-Wunused-parameter"
-#else
-/* and same for gcc */
-#pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wsign-compare"
+/* ignore unused functions */
 #pragma GCC diagnostic ignored "-Wunused-function"
+/* ignore unused parameters */
 #pragma GCC diagnostic ignored "-Wunused-parameter"
-#endif
 
 %}
 
@@ -100,9 +93,8 @@ static size_t event_filter_parser_input_proc(char *buf, size_t size, yyscan_t sc
                                        return (unsigned char) *yytext;
                                }
 %%
-#ifdef __clang__
-#pragma clang diagnostic pop
-#endif
+
+#pragma GCC diagnostic pop
 
 void *yyalloc(size_t bytes, void* yyscanner ATTR_UNUSED)
 {
index 652b896ba6fa837c298524ecdd45ae72438acdd7..61aae104771ab2018a361ecc8865ad3dfc25842e 100644 (file)
@@ -129,12 +129,11 @@ static struct event_filter_node *logic(struct event_filter_parser_state *state,
        return node;
 }
 
-#ifdef __clang__
-/* ignore "unknown warning" warning if we're using unpatched clang */
-#pragma clang diagnostic ignored "-Wunknown-warning-option"
 /* ignore strict bool warnings in generated code */
-#pragma clang diagnostic ignored "-Wstrict-bool"
+#ifdef HAVE_STRICT_BOOL
+#  pragma GCC diagnostic ignored "-Wstrict-bool"
 #endif
+
 %}
 
 %union {