Commit 0343822b by Richard Sandiford Committed by Richard Sandiford

re PR middle-end/55359 (ICE in simplify_subreg accessing an unaligned subvector)

gcc/
	PR middle-end/55359
	* simplify-rtx.c (simplify_subreg): Return null for invalid offsets.

gcc/testsuite/
	* gcc.target/i386/pr55359.c: New test.

From-SVN: r193640
parent 0e8330d9
2012-11-19 Richard Sandiford <rdsandiford@googlemail.com>
PR middle-end/55359
* simplify-rtx.c (simplify_subreg): Return null for invalid offsets.
2012-11-19 Aldy Hernandez <aldyh@redhat.com>
* trans-mem.c (execute_tm_mark): Release bb_regions.
......@@ -5685,8 +5685,11 @@ simplify_subreg (enum machine_mode outermode, rtx op,
gcc_assert (GET_MODE (op) == innermode
|| GET_MODE (op) == VOIDmode);
gcc_assert ((byte % GET_MODE_SIZE (outermode)) == 0);
gcc_assert (byte < GET_MODE_SIZE (innermode));
if ((byte % GET_MODE_SIZE (outermode)) != 0)
return NULL_RTX;
if (byte >= GET_MODE_SIZE (innermode))
return NULL_RTX;
if (outermode == innermode && !byte)
return op;
......
2012-11-19 Richard Sandiford <rdsandiford@googlemail.com>
* gcc.target/i386/pr55359.c: New test.
2012-11-19 Eric Botcazou <ebotcazou@adacore.com>
* g++.dg/tls/thread_local-order1.C: Add dg-require-cxa-atexit.
......
/* { dg-do compile } */
/* { dg-options "-mavx2 -O2" } */
#include <x86intrin.h>
__m128d
f (__m256d x)
{
return *((__m128d*) ((double *) &x + 1));
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment