1 /* PR rtl-optimization/95862 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2" } */
4
5 int
6 f1 (int a, int b)
7 {
8 unsigned long long c;
9 return __builtin_mul_overflow (a, b, &c);
10 }
11
12 int
13 f2 (int a, unsigned b)
14 {
15 unsigned long long c;
16 return __builtin_mul_overflow (a, b, &c);
17 }
18
19 int
20 f3 (unsigned a, unsigned b)
21 {
22 long long c;
23 return __builtin_mul_overflow (a, b, &c);
24 }
25
26 int
27 f4 (int a, unsigned b)
28 {
29 long long c;
30 return __builtin_mul_overflow (a, b, &c);
31 }
32
33 short
34 f5 (short a, short b)
35 {
36 unsigned c;
37 return __builtin_mul_overflow (a, b, &c);
38 }
39
40 short
41 f6 (short a, unsigned short b)
42 {
43 unsigned c;
44 return __builtin_mul_overflow (a, b, &c);
45 }
46
47 short
48 f7 (unsigned short a, unsigned short b)
49 {
50 int c;
51 return __builtin_mul_overflow (a, b, &c);
52 }
53
54 short
55 f8 (short a, unsigned short b)
56 {
57 int c;
58 return __builtin_mul_overflow (a, b, &c);
59 }
60
61 signed char
62 f9 (signed char a, signed char b)
63 {
64 unsigned short c;
65 return __builtin_mul_overflow (a, b, &c);
66 }
67
68 signed char
69 f10 (signed char a, unsigned char b)
70 {
71 unsigned short c;
72 return __builtin_mul_overflow (a, b, &c);
73 }
74
75 signed char
76 f11 (unsigned char a, unsigned char b)
77 {
78 short c;
79 return __builtin_mul_overflow (a, b, &c);
80 }
81
82 signed char
83 f12 (signed char a, unsigned char b)
84 {
85 short c;
86 return __builtin_mul_overflow (a, b, &c);
87 }