------- 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