2 /* { dg-options "-fsanitize=signed-integer-overflow" } */
8 #define MUL_WITH_CHECK(xv, yv, zv) \
13 asm ("" : "+g" (x)); \
14 asm ("" : "+g" (y)); \
16 asm ("" : "+g" (z)); \
20 MUL_WITH_CHECK (0x1555555555555556LL
, 6LL, -0x7ffffffffffffffcLL
);
21 MUL_WITH_CHECK (-0x1555555555555556LL
, -6LL, -0x7ffffffffffffffcLL
);
22 MUL_WITH_CHECK (0x1555555555555556LL
, -6LL, 0x7ffffffffffffffcLL
);
23 MUL_WITH_CHECK (-0x1555555555555556LL
, 6LL, 0x7ffffffffffffffcLL
);
24 MUL_WITH_CHECK (0x81234568LL
, 0xfdbe971fLL
, -0x7fffffff439a4068LL
);
25 MUL_WITH_CHECK (-0x81234568LL
, -0xfdbe971fLL
, -0x7fffffff439a4068LL
);
26 MUL_WITH_CHECK (0x81234568LL
, -0xfdbe971fLL
, 0x7fffffff439a4068LL
);
27 MUL_WITH_CHECK (-0x81234568LL
, 0xfdbe971fLL
, 0x7fffffff439a4068LL
);
28 MUL_WITH_CHECK (0x1555555555555555LL
, 7LL, -0x6aaaaaaaaaaaaaadLL
);
29 MUL_WITH_CHECK (-0x1555555555555555LL
, -7LL, -0x6aaaaaaaaaaaaaadLL
);
30 MUL_WITH_CHECK (0x1555555555555555LL
, -7LL, 0x6aaaaaaaaaaaaaadLL
);
31 MUL_WITH_CHECK (-0x1555555555555555LL
, 7LL, 0x6aaaaaaaaaaaaaadLL
);
32 MUL_WITH_CHECK (0x81234567LL
, 0xfdbe9720LL
, -0x7fffffffc0359220LL
);
33 MUL_WITH_CHECK (-0x81234567LL
, -0xfdbe9720LL
, -0x7fffffffc0359220LL
);
34 MUL_WITH_CHECK (0x81234567LL
, -0xfdbe9720LL
, 0x7fffffffc0359220LL
);
35 MUL_WITH_CHECK (-0x81234567LL
, 0xfdbe9720LL
, 0x7fffffffc0359220LL
);
36 MUL_WITH_CHECK (6LL, 0x1555555555555556LL
, -0x7ffffffffffffffcLL
);
37 MUL_WITH_CHECK (-6LL, -0x1555555555555556LL
, -0x7ffffffffffffffcLL
);
38 MUL_WITH_CHECK (-6LL, 0x1555555555555556LL
, 0x7ffffffffffffffcLL
);
39 MUL_WITH_CHECK (6LL, -0x1555555555555556LL
, 0x7ffffffffffffffcLL
);
40 MUL_WITH_CHECK (0xfdbe971fLL
, 0x81234568LL
, -0x7fffffff439a4068LL
);
41 MUL_WITH_CHECK (-0xfdbe971fLL
, -0x81234568LL
, -0x7fffffff439a4068LL
);
42 MUL_WITH_CHECK (-0xfdbe971fLL
, 0x81234568LL
, 0x7fffffff439a4068LL
);
43 MUL_WITH_CHECK (0xfdbe971fLL
, -0x81234568LL
, 0x7fffffff439a4068LL
);
44 MUL_WITH_CHECK (7LL, 0x1555555555555555LL
, -0x6aaaaaaaaaaaaaadLL
);
45 MUL_WITH_CHECK (-7LL, -0x1555555555555555LL
, -0x6aaaaaaaaaaaaaadLL
);
46 MUL_WITH_CHECK (-7LL, 0x1555555555555555LL
, 0x6aaaaaaaaaaaaaadLL
);
47 MUL_WITH_CHECK (7LL, -0x1555555555555555LL
, 0x6aaaaaaaaaaaaaadLL
);
48 MUL_WITH_CHECK (0xfdbe9720LL
, 0x81234567LL
, -0x7fffffffc0359220LL
);
49 MUL_WITH_CHECK (-0xfdbe9720LL
, -0x81234567LL
, -0x7fffffffc0359220LL
);
50 MUL_WITH_CHECK (-0xfdbe9720LL
, 0x81234567LL
, 0x7fffffffc0359220LL
);
51 MUL_WITH_CHECK (0xfdbe9720LL
, -0x81234567LL
, 0x7fffffffc0359220LL
);
55 /* { dg-output "overflow-mul-4.c:20:\[^\n\r]*signed integer overflow: 1537228672809129302 \\* 6 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
56 /* { dg-output "\[^\n\r]*overflow-mul-4.c:21:\[^\n\r]*signed integer overflow: -1537228672809129302 \\* -6 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
57 /* { dg-output "\[^\n\r]*overflow-mul-4.c:22:\[^\n\r]*signed integer overflow: 1537228672809129302 \\* -6 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
58 /* { dg-output "\[^\n\r]*overflow-mul-4.c:23:\[^\n\r]*signed integer overflow: -1537228672809129302 \\* 6 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
59 /* { dg-output "\[^\n\r]*overflow-mul-4.c:24:\[^\n\r]*signed integer overflow: 2166572392 \\* 4257126175 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
60 /* { dg-output "\[^\n\r]*overflow-mul-4.c:25:\[^\n\r]*signed integer overflow: -2166572392 \\* -4257126175 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
61 /* { dg-output "\[^\n\r]*overflow-mul-4.c:26:\[^\n\r]*signed integer overflow: 2166572392 \\* -4257126175 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
62 /* { dg-output "\[^\n\r]*overflow-mul-4.c:27:\[^\n\r]*signed integer overflow: -2166572392 \\* 4257126175 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
63 /* { dg-output "\[^\n\r]*overflow-mul-4.c:28:\[^\n\r]*signed integer overflow: 1537228672809129301 \\* 7 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
64 /* { dg-output "\[^\n\r]*overflow-mul-4.c:29:\[^\n\r]*signed integer overflow: -1537228672809129301 \\* -7 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
65 /* { dg-output "\[^\n\r]*overflow-mul-4.c:30:\[^\n\r]*signed integer overflow: 1537228672809129301 \\* -7 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
66 /* { dg-output "\[^\n\r]*overflow-mul-4.c:31:\[^\n\r]*signed integer overflow: -1537228672809129301 \\* 7 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
67 /* { dg-output "\[^\n\r]*overflow-mul-4.c:32:\[^\n\r]*signed integer overflow: 2166572391 \\* 4257126176 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
68 /* { dg-output "\[^\n\r]*overflow-mul-4.c:33:\[^\n\r]*signed integer overflow: -2166572391 \\* -4257126176 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
69 /* { dg-output "\[^\n\r]*overflow-mul-4.c:34:\[^\n\r]*signed integer overflow: 2166572391 \\* -4257126176 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
70 /* { dg-output "\[^\n\r]*overflow-mul-4.c:35:\[^\n\r]*signed integer overflow: -2166572391 \\* 4257126176 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
71 /* { dg-output "\[^\n\r]*overflow-mul-4.c:36:\[^\n\r]*signed integer overflow: 6 \\* 1537228672809129302 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
72 /* { dg-output "\[^\n\r]*overflow-mul-4.c:37:\[^\n\r]*signed integer overflow: -6 \\* -1537228672809129302 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
73 /* { dg-output "\[^\n\r]*overflow-mul-4.c:38:\[^\n\r]*signed integer overflow: -6 \\* 1537228672809129302 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
74 /* { dg-output "\[^\n\r]*overflow-mul-4.c:39:\[^\n\r]*signed integer overflow: 6 \\* -1537228672809129302 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
75 /* { dg-output "\[^\n\r]*overflow-mul-4.c:40:\[^\n\r]*signed integer overflow: 4257126175 \\* 2166572392 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
76 /* { dg-output "\[^\n\r]*overflow-mul-4.c:41:\[^\n\r]*signed integer overflow: -4257126175 \\* -2166572392 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
77 /* { dg-output "\[^\n\r]*overflow-mul-4.c:42:\[^\n\r]*signed integer overflow: -4257126175 \\* 2166572392 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
78 /* { dg-output "\[^\n\r]*overflow-mul-4.c:43:\[^\n\r]*signed integer overflow: 4257126175 \\* -2166572392 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
79 /* { dg-output "\[^\n\r]*overflow-mul-4.c:44:\[^\n\r]*signed integer overflow: 7 \\* 1537228672809129301 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
80 /* { dg-output "\[^\n\r]*overflow-mul-4.c:45:\[^\n\r]*signed integer overflow: -7 \\* -1537228672809129301 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
81 /* { dg-output "\[^\n\r]*overflow-mul-4.c:46:\[^\n\r]*signed integer overflow: -7 \\* 1537228672809129301 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
82 /* { dg-output "\[^\n\r]*overflow-mul-4.c:47:\[^\n\r]*signed integer overflow: 7 \\* -1537228672809129301 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
83 /* { dg-output "\[^\n\r]*overflow-mul-4.c:48:\[^\n\r]*signed integer overflow: 4257126176 \\* 2166572391 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
84 /* { dg-output "\[^\n\r]*overflow-mul-4.c:49:\[^\n\r]*signed integer overflow: -4257126176 \\* -2166572391 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
85 /* { dg-output "\[^\n\r]*overflow-mul-4.c:50:\[^\n\r]*signed integer overflow: -4257126176 \\* 2166572391 cannot be represented in type 'long long int'\[^\n\r]*(\n|\r\n|\r)" } */
86 /* { dg-output "\[^\n\r]*overflow-mul-4.c:51:\[^\n\r]*signed integer overflow: 4257126176 \\* -2166572391 cannot be represented in type 'long long int'" } */