https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82518
--- Comment #43 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Wilco from comment #42) > Cut down example: > > typedef struct { int x, y; } X; > > void f (X *p, int n) > { > for (int i = 0; i < n; i++) > { p[i].x = i; > p[i].y = i + 1; > } > } Can't reproduce your assembler with -O3 -mcpu=cortex-a9 -mfpu=neon-fp16 [-fno-vect-cost-model] [-mthumb] Without -fno-vect-cost-model we don't vectorize anything. With we only SLP vectorize and that using V1SI vector types (huh). For the loop case: t.c:6:3: note: Build SLP for _3->x = i_15; t.c:6:3: note: Build SLP for _3->y = _4; t.c:6:3: note: vect_is_simple_use: operand i_15 t.c:6:3: note: def_stmt: i_15 = PHI <0(5), _4(6)> t.c:6:3: note: type of def: induction t.c:6:3: note: vect_is_simple_use: operand _4 t.c:6:3: note: def_stmt: _4 = i_15 + 1; t.c:6:3: note: type of def: internal t.c:6:3: note: Build SLP failed: different types ok, known missed handling of SLP induction. t.c:6:3: note: ==> examining statement: _3->x = i_15; t.c:6:3: note: vect_is_simple_use: operand i_15 t.c:6:3: note: def_stmt: i_15 = PHI <0(5), _4(6)> t.c:6:3: note: type of def: induction t.c:6:3: note: no array mode for DI[2] permutaion op not supported by target. so we don't support intereaving either. Not sure why it talks about DI[2] instead of SI[2].