https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82192
--- Comment #2 from Vsevolod Livinskiy <vsevolod.livinskij at frtk dot ru> --- (In reply to Andrew Pinski from comment #1) > Does -fsantize=undefined show anything? > > I am suspecting you have undefined behavior with respect to the shift. Test doesn't contain undefined behavior, and sanitizer verifies it. (7227976781724269559 | a & ~3739384568U) gives 7227976781724531703, and (7227976781724269559 | a & ~3739384568U) - 7227976781724531672 gives 31, so shift is OK.