From: Alexandre Oliva Date: Sat, 19 Feb 2011 21:15:01 +0000 (+0000) Subject: re PR tree-optimization/46620 (32-bit structures containing bitfields are not copied... X-Git-Tag: releases/gcc-4.4.6~116 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3f7e335f02d71b8a08e7ff19d5b433d8534b7ad;p=thirdparty%2Fgcc.git re PR tree-optimization/46620 (32-bit structures containing bitfields are not copied correctly on -O2 , x86 backend) PR tree-optimization/46620 * tree-sra.c (try_instantiate_multiple_fields): Don't get stuck at padding within accessed words. From-SVN: r170328 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7743ae0d4935..76fd7eb5944c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-02-19 Alexandre Oliva + + PR tree-optimization/46620 + * tree-sra.c (try_instantiate_multiple_fields): Don't get stuck at + padding within accessed words. + 2011-02-18 John David Anglin * config.gcc (hppa[12]*-*-hpux11*): Set extra_parts. diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index b693ddd178dd..b0200cd1ffe8 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1661,13 +1661,13 @@ try_instantiate_multiple_fields (struct sra_elt *elt, tree f) || mbit + msize <= fbit) continue; - if (fbit <= mbit) + if (fbit < bit) { unsigned HOST_WIDE_INT diff = fbit + fsize - mbit; mbit += diff; msize -= diff; } - else if (fbit > mbit) + else if (fbit > bit) msize -= (mbit + msize - fbit); else gcc_unreachable ();