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