2 /* { dg-options "-fsanitize=signed-integer-overflow" } */
6 __attribute__((noinline
, noclone
)) long long
7 mul (long long x
, long long y
)
13 0x7fffffffLL
, 0x7fffffffLL
, 0x3fffffff00000001LL
,
14 -0x80000000LL
, -0x80000000LL
, 0x4000000000000000LL
,
15 0x7fffffffLL
, -0x80000000LL
, -0x3fffffff80000000LL
,
16 -0x80000000LL
, 0x7fffffffLL
, -0x3fffffff80000000LL
,
21 0x1555555555555555LL
, 6LL, 0x7ffffffffffffffeLL
,
22 -0x1555555555555555LL
, -6LL, 0x7ffffffffffffffeLL
,
23 0x1555555555555555LL
, -6LL, -0x7ffffffffffffffeLL
,
24 -0x1555555555555555LL
, 6LL, -0x7ffffffffffffffeLL
,
25 0x81234567LL
, 0xfdbe971fLL
, 0x7fffffffbea72879LL
,
26 -0x81234567LL
, -0xfdbe971fLL
, 0x7fffffffbea72879LL
,
27 0x81234567LL
, -0xfdbe971fLL
, -0x7fffffffbea72879LL
,
28 -0x81234567LL
, 0xfdbe971fLL
, -0x7fffffffbea72879LL
34 fputs ("UBSAN TEST START\n", stderr
);
37 for (i
= 0; i
< sizeof (tab
) / sizeof (long long); i
+= 3)
38 if (mul (tab
[i
], tab
[i
+ 1]) != tab
[i
+ 2]
39 || mul (tab
[i
+ 1], tab
[i
]) != tab
[i
+ 2])
42 fputs ("UBSAN TEST END\n", stderr
);
46 /* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */