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 <jakub@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.
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");
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");