https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63504
--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For 2) a short testcase is: __uint128_t foo (void) { __uint128_t a = -1; __uint128_t b = a - 0x80000000ULL; return a / b; } (even on x86_64 native).