https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78120
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Uroš Bizjak from comment #0) > typedef unsigned long u64; > > typedef struct { > u64 hi, lo; > } u128; > > static inline u128 add_u128 (u128 a, u128 b) > { > a.lo += b.lo; > if (a.lo < b.lo) > a.hi++; > > return a; While not connected to this problem, it has been pointed out that a.hi += b.hi; is missing in the above source, if we want to implement true 128bit addition. So, if we want to be pedantic, the missing line should be added to the test. It doesn't change the outcome in any way.