PR 81271: gcc/cp/lex.c:116: wrong condition ?
Checks
Commit Message
Change the style from & to && to reflect boolean result with boolean
operation (instead of bitwise operation)
David Binderman 2017-07-01 13:24:44 UTC
trunk/gcc/cp/lex.c:116]: (style) Boolean result is used in bitwise
operation. Clarify expression with parentheses.
Source code is
gcc_checking_assert (!IDENTIFIER_KIND_BIT_2 (id)
& !IDENTIFIER_KIND_BIT_1 (id)
& !IDENTIFIER_KIND_BIT_0 (id));
Maybe better code
gcc_checking_assert (!IDENTIFIER_KIND_BIT_2 (id)
&& !IDENTIFIER_KIND_BIT_1 (id)
&& !IDENTIFIER_KIND_BIT_0 (id));
Comments
On 1/24/24 00:57, Jasmine Tang wrote:
> Change the style from & to && to reflect boolean result with boolean
> operation (instead of bitwise operation)
>
> David Binderman 2017-07-01 13:24:44 UTC
>
> trunk/gcc/cp/lex.c:116]: (style) Boolean result is used in bitwise operation. Clarify expression with parentheses.
>
> Source code is
>
> gcc_checking_assert (!IDENTIFIER_KIND_BIT_2 (id)
> & !IDENTIFIER_KIND_BIT_1 (id)
> & !IDENTIFIER_KIND_BIT_0 (id));
>
> Maybe better code
>
> gcc_checking_assert (!IDENTIFIER_KIND_BIT_2 (id)
> && !IDENTIFIER_KIND_BIT_1 (id)
> && !IDENTIFIER_KIND_BIT_0 (id));
>
Since the _BIT_n macros all produce either 0 or 1, bitwise & has the
same meaning as &&, except possibly faster because it doesn't involve
the shortcut semantics of &&.
I notice the warning suggests "Clarify expression with parentheses." I
suspect that means along the lines of IDENTIFIER_KEYWORD_P and such in
cp-tree.h, where the ! expression is parenthesized:
> #define IDENTIFIER_KEYWORD_P(NODE) \
> ((!IDENTIFIER_KIND_BIT_2 (NODE)) \
> & (!IDENTIFIER_KIND_BIT_1 (NODE)) \
> & IDENTIFIER_KIND_BIT_0 (NODE))
Does doing that quiet the warning?
Jason
From 10b501ffa8a11c7f10fd6e6ab5d9a876a321fe13 Mon Sep 17 00:00:00 2001
From: Jasmine <tanghocle456@gmail.com>
Date: Tue, 23 Jan 2024 21:18:13 -0800
Subject: [PATCH] Fix compiler warning: Boolean result is used in bitwise
operation
---
gcc/cp/lex.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
@@ -136,8 +136,8 @@ void
set_identifier_kind (tree id, cp_identifier_kind kind)
{
gcc_checking_assert (!IDENTIFIER_KIND_BIT_2 (id)
- & !IDENTIFIER_KIND_BIT_1 (id)
- & !IDENTIFIER_KIND_BIT_0 (id));
+ && !IDENTIFIER_KIND_BIT_1 (id)
+ && !IDENTIFIER_KIND_BIT_0 (id));
IDENTIFIER_KIND_BIT_2 (id) |= (kind >> 2) & 1;
IDENTIFIER_KIND_BIT_1 (id) |= (kind >> 1) & 1;
IDENTIFIER_KIND_BIT_0 (id) |= (kind >> 0) & 1;
--
2.34.1