1 /* { dg-do compile } */
2 /* { dg-options "-O3" } */
3
4 #include <stdint.h>
5
6 uint32_t
7 truncate_int (const unsigned long long value)
8 {
9 if ( value < 0 )
10 {
11 return 0;
12 }
13 else if ( value > UINT32_MAX )
14 {
15 return UINT32_MAX;
16 }
17 else
18 return (uint32_t)value;
19 }
20
21 uint32_t
22 mul (const unsigned long long x, const unsigned long long y)
23 {
24 uint32_t value = truncate_int (x * y);
25 return value;
26 }
27
28 uint32_t *
29 test(unsigned size, uint32_t *a, uint32_t s)
30 {
31 unsigned i;
32
33 for (i = 0; i < size; i++)
34 {
35 a[i] = mul (a[i], s);
36 }
37
38 return a;
39 }