From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32044 invoked by alias); 18 Dec 2002 23:17:04 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 32020 invoked by uid 61); 18 Dec 2002 23:17:03 -0000 Date: Wed, 18 Dec 2002 15:17:00 -0000 Message-ID: <20021218231703.32019.qmail@sources.redhat.com> To: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, hakonrk@fys.uio.no, nobody@gcc.gnu.org From: reichelt@igpm.rwth-aachen.de Reply-To: reichelt@igpm.rwth-aachen.de, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, hakonrk@fys.uio.no, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: c/8996: Unreliable bitfields X-SW-Source: 2002-12/txt/msg00983.txt.bz2 List-Id: Synopsis: Unreliable bitfields State-Changed-From-To: open->closed State-Changed-By: reichelt State-Changed-When: Wed Dec 18 15:17:02 2002 State-Changed-Why: Not a bug. Your program does not obey aliasing rules. You can use the option "-fno-strict-aliasing" as a workaround or you can correct your code: int main(void) { union { struct { unsigned a : 8; unsigned b : 23; unsigned c : 1; } x; unsigned i; } u; u.i = -1; u.x.c = 1; u.x.b = 1; u.x.a = 0; printf("%08X\n", u.i); return 0; } http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8996