https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112536

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
unsigned a[4];

void
foo (void)
{
  int i = a[0];
  int j = a[1];
  int k = a[2];
  int l = a[3];
  int e = i ? __builtin_clz (i) : __SIZEOF_INT__ * __CHAR_BIT__;
  int f = j ? __builtin_clz (j) : __SIZEOF_INT__ * __CHAR_BIT__;
  int g = k ? __builtin_clz (k) : __SIZEOF_INT__ * __CHAR_BIT__;
  int h = l ? __builtin_clz (l) : __SIZEOF_INT__ * __CHAR_BIT__;
  a[0] = e;
  a[1] = f;
  a[2] = g;
  a[3] = h;
}

ICEs on x86_64-linux as well with -mlzcnt -mavx512cd -mavx512vl

Reply via email to