mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 08:30:35 +08:00
re PR middle-end/65680 (ICE at -O1 and above on x86_64-linux-gnu in expand_assignment, at expr.c:4830)
PR middle-end/65680 * expr.c (get_inner_reference): Handle bit_offset that doesn't fit into signed HOST_WIDE_INT the same as negative bit_offset. * gcc.c-torture/compile/pr65680.c: New test. From-SVN: r221899
This commit is contained in:
parent
440f9408ea
commit
dcc72b9e73
@ -1,3 +1,9 @@
|
||||
2015-04-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/65680
|
||||
* expr.c (get_inner_reference): Handle bit_offset that doesn't fit
|
||||
into signed HOST_WIDE_INT the same as negative bit_offset.
|
||||
|
||||
2015-04-07 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
* ipa-comdats.c (ipa_comdats): Visit all thunks
|
||||
|
@ -6941,7 +6941,7 @@ get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize,
|
||||
if (offset)
|
||||
{
|
||||
/* Avoid returning a negative bitpos as this may wreak havoc later. */
|
||||
if (wi::neg_p (bit_offset))
|
||||
if (wi::neg_p (bit_offset) || !wi::fits_shwi_p (bit_offset))
|
||||
{
|
||||
offset_int mask = wi::mask <offset_int> (LOG2_BITS_PER_UNIT, false);
|
||||
offset_int tem = bit_offset.and_not (mask);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-04-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/65680
|
||||
* gcc.c-torture/compile/pr65680.c: New test.
|
||||
|
||||
2015-04-07 Andre Vehreschild <vehre@gmx.de>
|
||||
|
||||
PR fortran/65548
|
||||
|
20
gcc/testsuite/gcc.c-torture/compile/pr65680.c
Normal file
20
gcc/testsuite/gcc.c-torture/compile/pr65680.c
Normal file
@ -0,0 +1,20 @@
|
||||
/* PR middle-end/65680 */
|
||||
/* { dg-do compile { target lp64 } } */
|
||||
|
||||
struct S
|
||||
{
|
||||
int f : 1;
|
||||
} a[100000000000000001][3];
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
struct S b = { 0 };
|
||||
a[100000000000000000][0] = b;
|
||||
}
|
||||
|
||||
void
|
||||
bar (void)
|
||||
{
|
||||
a[100000000000000000][0].f = 1;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user