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)

Reply via email to