https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103905
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Last reconfirmed| |2022-01-05 --- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> --- > > Do you know what nelt and odd values are used during the misbehaving > *_vec_even_odd on your testcase? If so, perhaps we could make bar noipa and > add perm verification in there, make foo also noipa and just call it from > main with those arguments... Thanks Jakub for the hint. Apparently, I was quite close to the testcase, but one needs nelt=8 and 64 elements of the perm array. So there's simplified test-case: $ cat xop.C int N = 8; char perm[64]; void __attribute__((noipa)) check (void) { for (int i = 0; i < N; ++i) __builtin_printf("perm[%d]=%d\n", i, perm[i]); if (perm[7] != 7) __builtin_abort (); } int main() { for (int i = 0; i < N; ++i) perm[i] = i; check (); return 0; } $ gcc xop.C -march=bdver1 -O3 $ ./a.out perm[0]=0 perm[1]=1 perm[2]=0 perm[3]=0 perm[4]=4 perm[5]=5 perm[6]=0 perm[7]=0 Aborted (core dumped)