From 291fdf69c516dab46eff352d77916019701e2266 Mon Sep 17 00:00:00 2001 From: Mikhail Kashkarov Date: Thu, 19 Sep 2019 18:13:05 +0300 Subject: [PATCH] Adjust ISan overflow-mul testcase for x32 bits 2019-09-19 Mikhail Kashkarov * c-c++-common/isan/overflow-mul.c: Support x32 archs. Change-Id: Icdf0a59ed97aa2df8b3107a6c8f83f28d295236d --- gcc/testsuite/c-c++-common/isan/overflow-mul.c | 45 ++++++++++++++------------ 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/gcc/testsuite/c-c++-common/isan/overflow-mul.c b/gcc/testsuite/c-c++-common/isan/overflow-mul.c index 7e29eb1..332268f 100644 --- a/gcc/testsuite/c-c++-common/isan/overflow-mul.c +++ b/gcc/testsuite/c-c++-common/isan/overflow-mul.c @@ -3,28 +3,28 @@ #include -#define CHECK_MUL(sign1, sign2, sign3, type1, type2, type3, val1, val2) \ + +#define CHECK_MUL(type1, type2, type3, val1, val2) \ do { \ - volatile sign1 type1 a = val1; \ - volatile sign2 type2 b = val2; \ - volatile sign3 type3 c = a * b; \ + volatile type1 a = val1; \ + volatile type2 b = val2; \ + volatile type3 c = a * b; \ } while (0) int main () { + CHECK_MUL(unsigned int, unsigned int, unsigned int, 2, UINT_MAX); + CHECK_MUL(unsigned int, unsigned int, signed int , 2, UINT_MAX); + CHECK_MUL(signed int , unsigned int, unsigned int, 2, UINT_MAX); + CHECK_MUL(signed int , unsigned int, signed int , 2, UINT_MAX); + CHECK_MUL(unsigned int, unsigned int, unsigned int, 2, INT_MAX); + CHECK_MUL(signed int , signed int , signed int , -2, INT_MAX); - CHECK_MUL(unsigned, unsigned, unsigned, int, int, int, 2, UINT_MAX); - CHECK_MUL(unsigned, unsigned, signed, int, int, int, 2, UINT_MAX); - CHECK_MUL(signed, unsigned, unsigned, int, int, int, 2, UINT_MAX); - CHECK_MUL(signed, unsigned, signed, int, int, int, 2, UINT_MAX); - CHECK_MUL(unsigned, unsigned, unsigned, int, int, int, 2, INT_MAX); - CHECK_MUL(signed, signed, signed, int, int, int, -2, INT_MAX); - - CHECK_MUL(unsigned, unsigned, unsigned, long, long, long, 2, ULONG_MAX); - CHECK_MUL(unsigned, unsigned, signed, long, long, long, 2, ULONG_MAX); - CHECK_MUL(signed, unsigned, unsigned, long, long, long, 2, ULONG_MAX); - CHECK_MUL(signed, unsigned, signed, long, long, long, 2, ULONG_MAX); - CHECK_MUL(unsigned, unsigned, unsigned, long, long, long, 2, LONG_MAX); - CHECK_MUL(signed, signed, signed, long, long, long, -2, LONG_MAX); + CHECK_MUL(unsigned long, unsigned long, unsigned long, 2, ULONG_MAX); + CHECK_MUL(unsigned long, unsigned long, signed long , 2, ULONG_MAX); + CHECK_MUL(signed long , unsigned long, unsigned long, 2, ULONG_MAX); + CHECK_MUL(signed long , unsigned long, signed long , 2, ULONG_MAX); + CHECK_MUL(unsigned long, unsigned long, unsigned long, 2, LONG_MAX); + CHECK_MUL(signed long , signed long , signed long , -2, LONG_MAX); return 0; } @@ -32,6 +32,11 @@ int main () { /* { dg-output "unsigned integer overflow: 2 \\* 4294967295 cannot be represented in type 'unsigned int'\[^\n\r]*(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 4294967295 cannot be represented in type 'unsigned int'\[^\n\r]*(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 4294967295 cannot be represented in type 'unsigned int'\[^\n\r]*(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 18446744073709551615 cannot be represented in type 'long unsigned int'\[^\n\r]*(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 18446744073709551615 cannot be represented in type 'long unsigned int'\[^\n\r]*(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 18446744073709551615 cannot be represented in type 'long unsigned int'" } */ + +/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 18446744073709551615 cannot be represented in type 'long unsigned int'\[^\n\r]*(\n|\r\n|\r)" { target lp64 } } */ +/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 18446744073709551615 cannot be represented in type 'long unsigned int'\[^\n\r]*(\n|\r\n|\r)" { target lp64 } } */ +/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 18446744073709551615 cannot be represented in type 'long unsigned int'" { target lp64 } } */ + +/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 4294967295 cannot be represented in type 'long unsigned int'\[^\n\r]*(\n|\r\n|\r)" { target ilp32 } } */ +/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 4294967295 cannot be represented in type 'long unsigned int'\[^\n\r]*(\n|\r\n|\r)" { target ilp32 } } */ +/* { dg-output "\[^\n\r]*unsigned integer overflow: 2 \\* 4294967295 cannot be represented in type 'long unsigned int'" { target ilp32 } } */ -- 2.7.4