/* { dg-do compile } */ /* { dg-options "-O3" } */ #include uint32_t truncate_int (const unsigned long long value) { if ( value < 0 ) { return 0; } else if ( value > UINT32_MAX ) { return UINT32_MAX; } else return (uint32_t)value; } uint32_t mul (const unsigned long long x, const unsigned long long y) { uint32_t value = truncate_int (x * y); return value; } uint32_t * test(unsigned size, uint32_t *a, uint32_t s) { unsigned i; for (i = 0; i < size; i++) { a[i] = mul (a[i], s); } return a; }