https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70021
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Simplified testcase: #define N 160 int a[N]; unsigned long long int b[N], c[N], d[N], e[N]; __attribute__((noinline, noclone)) void foo () { int i; for (i = 0; i < N; i += 4) { unsigned long long int f = (_Bool) b[i]; unsigned long long int g = c[i] != d[i]; e[i] = g ^ (a[i] & (g << f)); } } int main () { int i; for (i = 0; i < N; ++i) a[i] = 1618000128; for (i = 0; i < N; ++i) b[i] = 10919594786573202791ULL; for (i = 0; i < N; ++i) c[i] = 2593730175074624973ULL; for (i = 0; i < N; ++i) d[i] = 7447894520878803661ULL; for (i = 0; i < N; ++i) e[i] = 14234165565810642243ULL; foo (); for (i = 0; i < N; ++i) if (e[i] != ((i & 3) ? 14234165565810642243ULL : 1ULL)) __builtin_abort (); return 0; }