https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116358
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced testcase: ``` unsigned long long *ttt; long long f(int b, int c, unsigned long long d, int *tt) { unsigned long long t3 = 0; int i = 0; unsigned long long t = d; if (!tt[0]) ; else { long long bb = b; unsigned long long a = bb; unsigned long long t2 = (a < 16 ? a : 16); t = t2 - 16; } tt[0] = t; return 0; } ``` Just need -O2.