modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr64006.c (about)

     1  /* PR tree-optimization/64006 */
     2  
     3  int v;
     4  
     5  long __attribute__ ((noinline, noclone))
     6  test (long *x, int y)
     7  {
     8    int i;
     9    long s = 1;
    10    for (i = 0; i < y; i++)
    11      if (__builtin_mul_overflow (s, x[i], &s))
    12        v++;
    13    return s;
    14  }
    15  
    16  int
    17  main ()
    18  {
    19    long d[7] = { 975, 975, 975, 975, 975, 975, 975 };
    20    long r = test (d, 7);
    21    if (sizeof (long) * __CHAR_BIT__ == 64 && v != 1)
    22      __builtin_abort ();
    23    else if (sizeof (long) * __CHAR_BIT__ == 32 && v != 4)
    24      __builtin_abort ();
    25    return 0;
    26  }