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:
parent
bef977d413
commit
2ab9a4a5e0
4 changed files with 36 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
14
gcc/testsuite/gcc.c-torture/compile/pr70355.c
Normal file
14
gcc/testsuite/gcc.c-torture/compile/pr70355.c
Normal 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];
|
||||
}
|
14
gcc/testsuite/gcc.target/i386/pr70355.c
Normal file
14
gcc/testsuite/gcc.target/i386/pr70355.c
Normal 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];
|
||||
}
|
Loading…
Add table
Reference in a new issue