From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 516 invoked by alias); 30 Apr 2008 19:27:43 -0000 Received: (qmail 32636 invoked by uid 48); 30 Apr 2008 19:26:56 -0000 Date: Wed, 30 Apr 2008 19:27:00 -0000 Message-ID: <20080430192656.32635.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug middle-end/18908] Missed folding opportunities with bools In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rguenth at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-04/txt/msg02162.txt.bz2 ------- Comment #11 from rguenth at gcc dot gnu dot org 2008-04-30 19:26 ------- On the trunk we have: f1 (const _Bool * p) { : return (_Bool) ((int) *p & 1); f2 (const _Bool * p) { : return *p; f3 (_Bool * p) { : *p = (_Bool) !*p; f4 (_Bool * p) { : *p = 1; where i686 assembly looks good for all cases. Still f4 looks weird (wrong-code?!) as we fold *p = ~*p to *p = (int) *p != -1; I'll open a PR for this. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18908