https://gcc.gnu.org/g:dd14b08e2caba952c0d8ff756a84e15d83aebeff
commit r15-7154-gdd14b08e2caba952c0d8ff756a84e15d83aebeff Author: Jakub Jelinek <ja...@redhat.com> Date: Thu Jan 23 11:13:52 2025 +0100 c++: Fix weird expression in test for clauses other than when/default/otherwise [PR118604] Some clang analyzer warned about if (!strcmp (p, "when") == 0 && !default_p) which really looks weird, it is better to use strcmp (p, "when") != 0 or !!strcmp (p, "when"). Furthermore, as a micro optimization, it is cheaper to evaluate default_p than calling strcmp, so that can be put first in the &&. The C test for the same thing wasn't that weird, but I think for consistency it is better to use the same test rather than trying to be creative. 2025-01-23 Jakub Jelinek <ja...@redhat.com> PR c++/118604 gcc/c/ * c-parser.cc (c_parser_omp_metadirective): Rewrite condition for clauses other than when, default and otherwise. gcc/cp/ * parser.cc (cp_parser_omp_metadirective): Test !default_p first and use strcmp () != 0 rather than !strcmp () == 0. Diff: --- gcc/c/c-parser.cc | 2 +- gcc/cp/parser.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index f193329099f5..93da0fbea500 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -29069,7 +29069,7 @@ c_parser_omp_metadirective (c_parser *parser, bool *if_p) c_parser_skip_to_end_of_block_or_statement (parser, true); goto error; } - if (!(strcmp (p, "when") == 0 || default_p)) + if (!default_p && strcmp (p, "when") != 0) { error_at (match_loc, "%qs is not valid for %qs", p, "metadirective"); diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index b823a3abd65d..24322817f3ed 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -51340,7 +51340,7 @@ cp_parser_omp_metadirective (cp_parser *parser, cp_token *pragma_tok, cp_parser_skip_to_end_of_block_or_statement (parser, true); goto fail; } - if (!strcmp (p, "when") == 0 && !default_p) + if (!default_p && strcmp (p, "when") != 0) { error_at (match_loc, "%qs is not valid for %qs", p, "metadirective");