re PR target/70355 (ICE: in simplify_subreg_concatn, at lower-subreg.c:617 with -funroll-loops -mavx512f)

PR middle-end/70355

  * lower-subreg.c (simplify_subreg_concatn): Reject paradoxical subregs.

From-SVN: r234524
This commit is contained in:
Richard Henderson 2016-03-29 08:19:00 -07:00 committed by Richard Henderson
parent bef977d413
commit 2ab9a4a5e0
4 changed files with 36 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2016-03-29 Richard Henderson <rth@redhat.com>
PR middle-end/70355
* lower-subreg.c (simplify_subreg_concatn): Reject paradoxical
subregs.
2016-03-29 Richard Biener <rguenther@suse.de>
PR middle-end/70424

View file

@ -614,7 +614,8 @@ simplify_subreg_concatn (machine_mode outermode, rtx op,
innermode = GET_MODE (op);
gcc_assert (byte < GET_MODE_SIZE (innermode));
gcc_assert (GET_MODE_SIZE (outermode) <= GET_MODE_SIZE (innermode));
if (GET_MODE_SIZE (outermode) > GET_MODE_SIZE (innermode))
return NULL_RTX;
inner_size = GET_MODE_SIZE (innermode) / XVECLEN (op, 0);
part = XVECEXP (op, 0, byte / inner_size);

View file

@ -0,0 +1,14 @@
/* { dg-require-effective-target int128 } */
/* { dg-additional-options "-g" } */
typedef unsigned __int128 v2ti __attribute__ ((vector_size (32)));
unsigned
foo (unsigned i, v2ti v)
{
do {
i--;
v %= ~v;
} while (i);
return v[0] + v[1];
}

View file

@ -0,0 +1,14 @@
/* { dg-require-effective-target int128 } */
/* { dg-options "-O2 -fno-tree-ter -funroll-loops -mavx512f -g" } */
typedef unsigned __int128 v2ti __attribute__ ((vector_size (32)));
unsigned
foo (unsigned i, v2ti v)
{
do {
i--;
v %= ~v;
} while (i);
return v[0] + v[1];
}