From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17084 invoked by alias); 10 May 2011 11:48:35 -0000 Received: (qmail 17074 invoked by uid 22791); 10 May 2011 11:48:35 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 10 May 2011 11:48:21 +0000 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/18041] OR of two single-bit bitfields is inefficient X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: enhancement X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Tue, 10 May 2011 11:48:00 -0000 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: 2011-05/txt/msg00822.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18041 --- Comment #5 from Richard Guenther 2011-05-10 11:38:50 UTC --- With a patch I have we now optimize at the tree level to : D.2686_2 = b_1(D)->bit0; D.2688_4 = b_1(D)->bit1; D.2693_10 = D.2688_4 ^ D.2686_2; b_1(D)->bit0 = D.2693_10; return; and with bitfield lowering applied to : BF.0_2 = MEM[(struct B *)b_1(D)]; D.2694_6 = BF.0_2 >> 1; D.2701_18 = D.2694_6 ^ BF.0_2; D.2696_12 = BF.0_2 & 4294967294; D.2697_13 = D.2701_18 & 1; BF.2_14 = D.2697_13 | D.2696_12; MEM[(struct B *)b_1(D)] = BF.2_14; return;