From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 27943385843A; Thu, 3 Feb 2022 09:40:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 27943385843A From: "redi at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/104359] GCC Treats bool with value != 1 as falsey when picking branches Date: Thu, 03 Feb 2022 09:40:37 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 11.2.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: redi at gcc dot gnu.org X-Bugzilla-Status: RESOLVED X-Bugzilla-Resolution: INVALID X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Feb 2022 09:40:37 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D104359 --- Comment #4 from Jonathan Wakely --- (In reply to Will Usher from comment #0) > However, b's "value" is 255, which should evaluate to "true". No. The only valid values of bool are true and false. If you set its bits to some other value representation which does not correspond to either the 'tr= ue' value or the 'false' value, you do not have an object of type bool, you have garbage. It's possible that a C++ implementation would use 0x11111111 for one of tru= e or false, in which case your memcpy would be valid. But that's not the case for GCC.=