https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118720
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- b -= n < (uint32_t)(100000); Can produce undefined behavior. because now you are doing `work-1` which is before the array. ``` static constexpr void foo(uint64_t n, char* b) { uint64_t f0 = 429497 * n; b[0] = fd[f0 >> 32][0]; b[1] = fd[f0 >> 32][1]; b[2 - (n < (uint32_t)(100000))] = '9'; } ``` Is the fix to the code.