From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3450 invoked by alias); 10 Sep 2002 09:56:07 -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 3387 invoked by uid 71); 10 Sep 2002 09:56:06 -0000 Date: Tue, 10 Sep 2002 02:56:00 -0000 Message-ID: <20020910095606.3384.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Richard Earnshaw Subject: Re: c/7873: arm-linux-gcc fails when assigning address to a bit field Reply-To: Richard Earnshaw X-SW-Source: 2002-09/txt/msg00169.txt.bz2 List-Id: The following reply was made to PR c/7873; it has been noted by GNATS. From: Richard Earnshaw To: alex.zatsman@analog.com Cc: gcc-gnats@gcc.gnu.org, debian-gcc@lists.debian.org, Richard.Earnshaw@arm.com Subject: Re: c/7873: arm-linux-gcc fails when assigning address to a bit field Date: Tue, 10 Sep 2002 10:50:50 +0100 > >How-To-Repeat: > > /** Run "arm-linux-gcc -c" on this preprocessed segment : **/ > > > unsigned int x0 = 0; > > typedef struct { > unsigned int field1 : 20; > unsigned int field2 : 12; > } XX; > > static XX yy; > > static void foo (void) > { > yy.field1 = (unsigned int ) (&x0); > } Please try the following patch: 2002-09-10 Richard Earnshaw * arm.md (insv): Use reg_or_int_operand for operand[3]. Index: arm.md =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.md,v retrieving revision 1.104 diff -p -r1.104 arm.md *** arm.md 29 Jul 2002 12:41:46 -0000 1.104 --- arm.md 10 Sep 2002 09:44:07 -0000 *************** *** 1866,1872 **** [(set (zero_extract:SI (match_operand:SI 0 "s_register_operand" "") (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "")) ! (match_operand:SI 3 "nonmemory_operand" ""))] "TARGET_ARM" " { --- 1866,1872 ---- [(set (zero_extract:SI (match_operand:SI 0 "s_register_operand" "") (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "")) ! (match_operand:SI 3 "reg_or_int_operand" ""))] "TARGET_ARM" " {