1  /* PR rtl-optimization/97282 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2" } */
       4  /* { dg-final { scan-assembler "call\[^\n\r]*__udivmod\[dt]i4" } } */
       5  
       6  #ifdef __SIZEOF_INT128__
       7  typedef __uint128_t T;
       8  #else
       9  typedef unsigned long long T;
      10  #endif
      11  
      12  unsigned long
      13  foo (T x)
      14  {
      15    if (x == 0)
      16      return 0;
      17  
      18    unsigned long ret = 0;
      19    while (x > 0)
      20      {
      21        ret = ret + x % 123456;
      22        x = x / 123456;
      23      }
      24    return ret;
      25  }