/* PR rtl-optimization/97282 */ /* { dg-do compile } */ /* { dg-options "-O2" } */ /* { dg-final { scan-assembler "call\[^\n\r]*__udivmod\[dt]i4" } } */ #ifdef __SIZEOF_INT128__ typedef __uint128_t T; #else typedef unsigned long long T; #endif unsigned long foo (T x) { if (x == 0) return 0; unsigned long ret = 0; while (x > 0) { ret = ret + x % 123456; x = x / 123456; } return ret; }