http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53353
--- Comment #2 from Steven Fuerst <svfuerst at gmail dot com> 2012-05-15 01:54:46 UTC --- Obviously a __int128_t fits in two registers. The bug is that gcc doesn't warn/error about code mistakenly trying to fit it into one. Instead, gcc generates a weird 16-bit operation, causing silent bad code generation.