------- Comment #9 from reichelt at gcc dot gnu dot org 2008-10-09 20:51
-------
I just stumbled over the same bug and a similar ICE in vectorizable_store:
The following valid code snippet triggers an ICE on mainline when compiled
with "-march=pentium4 -O2 -ftree-vectorize" on i686-pc-linux-gnu:
==================================================================
void foo(int* __restrict__ p, int* q, int* p1, int *q1)
{
int i;
p = p1;
q = q1;
for (i = 0; i < 4; ++i)
*++q = *++p + 1;
}
==================================================================
bug.c: In function 'foo':
bug.c:1: internal compiler error: in vectorizable_load, at
tree-vect-transform.c:6675
Please submit a full bug report, [etc.]
Moving the restrict keyword triggers a slightly different ICE:
==================================================================
void foo(int* p, int* __restrict__ q, int* p1, int *q1)
{
int i;
p = p1;
q = q1;
for (i = 0; i < 4; ++i)
*++q = *++p + 1;
}
==================================================================
bug.c: In function 'foo':
bug.c:1: internal compiler error: in vectorizable_store, at
tree-vect-transform.c:5447
Please submit a full bug report, [etc.]
This is a recent regression, introduced between 2008-09-29 and 2008-10-08.
--
reichelt at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |reichelt at gcc dot gnu dot
| |org
Keywords| |monitored
Summary|[4.4 Regression] ICE in |[4.4 Regression] ICE in
|vectorizer with restrict |vectorizer with restrict
|pointer to struct |pointer
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37742