From c2e66755b6b6336dd5d93da3f4effb81d236397e Mon Sep 17 00:00:00 2001 From: Georg-Johann Lay <avr@gjlay.de> Date: Sat, 6 Jan 2024 19:37:27 +0100 Subject: [PATCH] testsuite/52641: Fix sloppy tests that did not care for sizeof(int)=2 etc. gcc/testsuite/ PR testsuite/52641 * gcc.c-torture/compile/attr-complex-method-2.c [target=avr]: Check for "divsc3" as double = float per default. * gcc.c-torture/compile/pr106537-1.c: Use __INTPTR_TYPE__ instead of hard-coded "long". * gcc.c-torture/compile/pr106537-2.c: Same. * gcc.c-torture/compile/pr106537-3.c: Same. * gcc.c-torture/execute/20230630-3.c: Use __INT32_TYPE__ for bit-field wider than 16 bits. * gcc.c-torture/execute/20230630-4.c: Same. * gcc.c-torture/execute/pr109938.c: Require int32plus. * gcc.c-torture/execute/pr109986.c: Same. * gcc.dg/fold-ior-4.c: Same. * gcc.dg/fold-ior-5.c: Same * gcc.dg/fold-parity-5.c: Same. * gcc.dg/fold-popcount-5.c: Same. * gcc.dg/builtin-bswap-13.c [sizeof(int) < 4]: Use __INT32_TYPE__ instead of int. * gcc.dg/builtin-bswap-14.c: Use __INT32_TYPE__ instead of int where required by code. * gcc.dg/c23-constexpr-9.c: Require large_double. * gcc.dg/c23-nullptr-1.c [target=avr]: xfail. * gcc.dg/loop-unswitch-10.c: Require size32plus. * gcc.dg/loop-unswitch-14.c: Same. * gcc.dg/loop-unswitch-11.c: Require int32. * gcc.dg/pr101836.c: Use __SIZEOF_INT instead of hard-coded 4. * gcc.dg/pr101836_1.c: Same. * gcc.dg/pr101836_2.c: Same. * gcc.dg/pr101836_3.c: Same. --- gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c | 3 ++- gcc/testsuite/gcc.c-torture/compile/pr106537-1.c | 6 +++--- gcc/testsuite/gcc.c-torture/compile/pr106537-2.c | 6 +++--- gcc/testsuite/gcc.c-torture/compile/pr106537-3.c | 6 +++--- gcc/testsuite/gcc.c-torture/execute/20230630-3.c | 2 +- gcc/testsuite/gcc.c-torture/execute/20230630-4.c | 2 +- gcc/testsuite/gcc.c-torture/execute/pr109938.c | 1 + gcc/testsuite/gcc.c-torture/execute/pr109986.c | 1 + gcc/testsuite/gcc.dg/builtin-bswap-13.c | 4 ++++ gcc/testsuite/gcc.dg/builtin-bswap-14.c | 4 ++-- gcc/testsuite/gcc.dg/c23-constexpr-9.c | 1 + gcc/testsuite/gcc.dg/c23-nullptr-1.c | 1 + gcc/testsuite/gcc.dg/fold-ior-4.c | 1 + gcc/testsuite/gcc.dg/fold-ior-5.c | 1 + gcc/testsuite/gcc.dg/fold-parity-5.c | 1 + gcc/testsuite/gcc.dg/fold-popcount-5.c | 1 + gcc/testsuite/gcc.dg/loop-unswitch-10.c | 1 + gcc/testsuite/gcc.dg/loop-unswitch-11.c | 1 + gcc/testsuite/gcc.dg/loop-unswitch-14.c | 1 + gcc/testsuite/gcc.dg/pr101836.c | 4 ++-- gcc/testsuite/gcc.dg/pr101836_1.c | 4 ++-- gcc/testsuite/gcc.dg/pr101836_2.c | 4 ++-- gcc/testsuite/gcc.dg/pr101836_3.c | 2 +- 23 files changed, 37 insertions(+), 21 deletions(-) diff --git a/gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c b/gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c index 0c5311ec675d..dc28e2c99c61 100644 --- a/gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c +++ b/gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c @@ -8,4 +8,5 @@ void do_div (_Complex double *a, _Complex double *b) *a = *b / (4.0 - 5.0fi); } -/* { dg-final { scan-tree-dump "__(?:gnu_)?divdc3" "optimized" } } */ +/* { dg-final { scan-tree-dump "__(?:gnu_)?divdc3" "optimized" { target { ! { avr-*-* } } } } } */ +/* { dg-final { scan-tree-dump "__(?:gnu_)?divsc3" "optimized" { target { avr-*-* } } } } */ diff --git a/gcc/testsuite/gcc.c-torture/compile/pr106537-1.c b/gcc/testsuite/gcc.c-torture/compile/pr106537-1.c index b67b6090dc38..a53fe2e35f38 100644 --- a/gcc/testsuite/gcc.c-torture/compile/pr106537-1.c +++ b/gcc/testsuite/gcc.c-torture/compile/pr106537-1.c @@ -3,7 +3,7 @@ This testcase checks that warn_compare_distinct_pointer_types is enabled by default. */ -typedef int __u32; +typedef __INT32_TYPE__ __u32; struct xdp_md { @@ -13,8 +13,8 @@ struct xdp_md int xdp_context (struct xdp_md *xdp) { - void *data = (void *)(long)xdp->data; - __u32 *metadata = (void *)(long)xdp->data_meta; + void *data = (void *)(__INTPTR_TYPE__)xdp->data; + __u32 *metadata = (void *)(__INTPTR_TYPE__)xdp->data_meta; __u32 ret; if (metadata + 1 > data) /* { dg-warning "comparison of distinct pointer types" } */ diff --git a/gcc/testsuite/gcc.c-torture/compile/pr106537-2.c b/gcc/testsuite/gcc.c-torture/compile/pr106537-2.c index d4223c25c949..d5a2afa163c7 100644 --- a/gcc/testsuite/gcc.c-torture/compile/pr106537-2.c +++ b/gcc/testsuite/gcc.c-torture/compile/pr106537-2.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-Wcompare-distinct-pointer-types" } */ -typedef int __u32; +typedef __INT32_TYPE__ __u32; struct xdp_md { @@ -11,8 +11,8 @@ struct xdp_md int xdp_context (struct xdp_md *xdp) { - void *data = (void *)(long)xdp->data; - __u32 *metadata = (void *)(long)xdp->data_meta; + void *data = (void *)(__INTPTR_TYPE__)xdp->data; + __u32 *metadata = (void *)(__INTPTR_TYPE__)xdp->data_meta; __u32 ret; if (metadata + 1 > data) /* { dg-warning "comparison of distinct pointer types" } */ diff --git a/gcc/testsuite/gcc.c-torture/compile/pr106537-3.c b/gcc/testsuite/gcc.c-torture/compile/pr106537-3.c index 73c9b251824d..13876eab337b 100644 --- a/gcc/testsuite/gcc.c-torture/compile/pr106537-3.c +++ b/gcc/testsuite/gcc.c-torture/compile/pr106537-3.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O0 -Wno-compare-distinct-pointer-types" } */ -typedef int __u32; +typedef __INT32_TYPE__ __u32; struct xdp_md { @@ -11,8 +11,8 @@ struct xdp_md int xdp_context (struct xdp_md *xdp) { - void *data = (void *)(long)xdp->data; - __u32 *metadata = (void *)(long)xdp->data_meta; + void *data = (void *)(__INTPTR_TYPE__)xdp->data; + __u32 *metadata = (void *)(__INTPTR_TYPE__)xdp->data_meta; __u32 ret; if (metadata + 1 > data) /* There shouldn't be a warning here. */ diff --git a/gcc/testsuite/gcc.c-torture/execute/20230630-3.c b/gcc/testsuite/gcc.c-torture/execute/20230630-3.c index fc106c97b5b5..735cb9b2edef 100644 --- a/gcc/testsuite/gcc.c-torture/execute/20230630-3.c +++ b/gcc/testsuite/gcc.c-torture/execute/20230630-3.c @@ -1,5 +1,5 @@ struct S { - int i : 24; + __INT32_TYPE__ i : 24; char c1 : 1; char c2 : 1; char c3 : 1; diff --git a/gcc/testsuite/gcc.c-torture/execute/20230630-4.c b/gcc/testsuite/gcc.c-torture/execute/20230630-4.c index df33c18a8cd7..e300cd42e0a7 100644 --- a/gcc/testsuite/gcc.c-torture/execute/20230630-4.c +++ b/gcc/testsuite/gcc.c-torture/execute/20230630-4.c @@ -5,7 +5,7 @@ #endif struct S { - int i : 24; + __INT32_TYPE__ i : 24; char c1 : 1; char c2 : 1; char c3 : 1; diff --git a/gcc/testsuite/gcc.c-torture/execute/pr109938.c b/gcc/testsuite/gcc.c-torture/execute/pr109938.c index a65d13b305dc..668d4ca19a93 100644 --- a/gcc/testsuite/gcc.c-torture/execute/pr109938.c +++ b/gcc/testsuite/gcc.c-torture/execute/pr109938.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target int32plus } */ /* PR tree-opt/109938 */ #include "../../gcc.dg/tree-ssa/pr109938.c" diff --git a/gcc/testsuite/gcc.c-torture/execute/pr109986.c b/gcc/testsuite/gcc.c-torture/execute/pr109986.c index 00ee98885391..c4c96452801e 100644 --- a/gcc/testsuite/gcc.c-torture/execute/pr109986.c +++ b/gcc/testsuite/gcc.c-torture/execute/pr109986.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target int32plus } */ /* PR middle-end/109986 */ #include "../../gcc.dg/tree-ssa/pr109986.c" diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-13.c b/gcc/testsuite/gcc.dg/builtin-bswap-13.c index 6dc4c15b4502..4f5bc9735f90 100644 --- a/gcc/testsuite/gcc.dg/builtin-bswap-13.c +++ b/gcc/testsuite/gcc.dg/builtin-bswap-13.c @@ -1,6 +1,10 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +#if __SIZEOF_INT__ < 4 +#define int __INT32_TYPE__ +#endif + int test_s32_0_1(int x) { return __builtin_bswap32(x) & 1; } int test_s32_0_2(int x) { return __builtin_bswap32(x) & 2; } int test_s32_0_240(int x) { return __builtin_bswap32(x) & 240; } diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-14.c b/gcc/testsuite/gcc.dg/builtin-bswap-14.c index 62711d8ef64d..0abf4666ef1d 100644 --- a/gcc/testsuite/gcc.dg/builtin-bswap-14.c +++ b/gcc/testsuite/gcc.dg/builtin-bswap-14.c @@ -5,11 +5,11 @@ extern void abort (void); __attribute__ ((noinline, noclone)) -static int rt32 (int x, int y, int z) { +static __INT32_TYPE__ rt32 (__INT32_TYPE__ x, int y, __INT32_TYPE__ z) { return (__builtin_bswap32(x) >> y) & z; } #define TEST32(X,Y,Z) if(((__builtin_bswap32(X)>>Y)&Z)!=rt32(X,Y,Z)) abort() -void test32(int x) +void test32(__INT32_TYPE__ x) { TEST32(x,0,1); TEST32(x,0,255); diff --git a/gcc/testsuite/gcc.dg/c23-constexpr-9.c b/gcc/testsuite/gcc.dg/c23-constexpr-9.c index 137058376e85..8dadb18725cc 100644 --- a/gcc/testsuite/gcc.dg/c23-constexpr-9.c +++ b/gcc/testsuite/gcc.dg/c23-constexpr-9.c @@ -3,6 +3,7 @@ /* { dg-options "-std=c23 -pedantic-errors" } */ /* { dg-add-options ieee } */ /* { dg-require-effective-target inff } */ +/* { dg-require-effective-target large_double } */ /* A conversion from signaling NaN to quiet NaN in a different format or type is not valid for constexpr. */ diff --git a/gcc/testsuite/gcc.dg/c23-nullptr-1.c b/gcc/testsuite/gcc.dg/c23-nullptr-1.c index a1b9dea25215..00ca7bd362bc 100644 --- a/gcc/testsuite/gcc.dg/c23-nullptr-1.c +++ b/gcc/testsuite/gcc.dg/c23-nullptr-1.c @@ -2,6 +2,7 @@ /* { dg-do run } */ // { dg-require-effective-target thread_fence } /* { dg-options "-std=c23 -pedantic-errors -Wall -Wextra -Wno-unused-variable" } */ +/* { dg-xfail-if "__atomic not supported" { "avr-*-*" } } */ #include <stdarg.h> diff --git a/gcc/testsuite/gcc.dg/fold-ior-4.c b/gcc/testsuite/gcc.dg/fold-ior-4.c index 8f7213eb6c94..17a2a4dc4190 100644 --- a/gcc/testsuite/gcc.dg/fold-ior-4.c +++ b/gcc/testsuite/gcc.dg/fold-ior-4.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* { dg-require-effective-target int32plus } */ unsigned int test_ior(unsigned char i) { diff --git a/gcc/testsuite/gcc.dg/fold-ior-5.c b/gcc/testsuite/gcc.dg/fold-ior-5.c index 8de56976da9d..8352fdd93939 100644 --- a/gcc/testsuite/gcc.dg/fold-ior-5.c +++ b/gcc/testsuite/gcc.dg/fold-ior-5.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* { dg-require-effective-target int32plus } */ unsigned int test_ior(unsigned char i) { diff --git a/gcc/testsuite/gcc.dg/fold-parity-5.c b/gcc/testsuite/gcc.dg/fold-parity-5.c index 69d3a6a54ca7..e30cd2f68e43 100644 --- a/gcc/testsuite/gcc.dg/fold-parity-5.c +++ b/gcc/testsuite/gcc.dg/fold-parity-5.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* { dg-require-effective-target int32plus } */ int test_and4(unsigned int a) { diff --git a/gcc/testsuite/gcc.dg/fold-popcount-5.c b/gcc/testsuite/gcc.dg/fold-popcount-5.c index 943726f09022..4963a4d02a54 100644 --- a/gcc/testsuite/gcc.dg/fold-popcount-5.c +++ b/gcc/testsuite/gcc.dg/fold-popcount-5.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* { dg-require-effective-target int32plus } */ int test_and4(unsigned int a) { diff --git a/gcc/testsuite/gcc.dg/loop-unswitch-10.c b/gcc/testsuite/gcc.dg/loop-unswitch-10.c index 395167ee6f83..20f5d87ea289 100644 --- a/gcc/testsuite/gcc.dg/loop-unswitch-10.c +++ b/gcc/testsuite/gcc.dg/loop-unswitch-10.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -funswitch-loops -fdump-tree-unswitch-optimized" } */ +/* { dg-require-effective-target size32plus } */ int __attribute__((noipa)) diff --git a/gcc/testsuite/gcc.dg/loop-unswitch-11.c b/gcc/testsuite/gcc.dg/loop-unswitch-11.c index 422a94227b25..e9441316d0d3 100644 --- a/gcc/testsuite/gcc.dg/loop-unswitch-11.c +++ b/gcc/testsuite/gcc.dg/loop-unswitch-11.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -funswitch-loops -fdump-tree-unswitch-optimized" } */ +/* { dg-require-effective-target int32 } */ int foo(double *a, double *b, double *c, double *d, double *r, int size, int order) diff --git a/gcc/testsuite/gcc.dg/loop-unswitch-14.c b/gcc/testsuite/gcc.dg/loop-unswitch-14.c index d9d31680cb82..e1225f6890f4 100644 --- a/gcc/testsuite/gcc.dg/loop-unswitch-14.c +++ b/gcc/testsuite/gcc.dg/loop-unswitch-14.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -funswitch-loops -fdump-tree-unswitch-optimized --param=max-unswitch-insns=1000" } */ +/* { dg-require-effective-target size32plus } */ int __attribute__((noipa)) diff --git a/gcc/testsuite/gcc.dg/pr101836.c b/gcc/testsuite/gcc.dg/pr101836.c index 096196d9b7f2..75349a83e123 100644 --- a/gcc/testsuite/gcc.dg/pr101836.c +++ b/gcc/testsuite/gcc.dg/pr101836.c @@ -46,8 +46,8 @@ void __attribute__((__noinline__)) stuff( struct trailing_array_3 *trailing_0, struct trailing_array_4 *trailing_flex) { - expect(__builtin_object_size(normal->c, 1), 16); - expect(__builtin_object_size(trailing_1->c, 1), 4); + expect(__builtin_object_size(normal->c, 1), 4 * __SIZEOF_INT__); + expect(__builtin_object_size(trailing_1->c, 1), __SIZEOF_INT__); expect(__builtin_object_size(trailing_0->c, 1), 0); expect(__builtin_object_size(trailing_flex->c, 1), -1); } diff --git a/gcc/testsuite/gcc.dg/pr101836_1.c b/gcc/testsuite/gcc.dg/pr101836_1.c index e2931ce1012e..19e63205a6c2 100644 --- a/gcc/testsuite/gcc.dg/pr101836_1.c +++ b/gcc/testsuite/gcc.dg/pr101836_1.c @@ -46,8 +46,8 @@ void __attribute__((__noinline__)) stuff( struct trailing_array_3 *trailing_0, struct trailing_array_4 *trailing_flex) { - expect(__builtin_object_size(normal->c, 1), 16); - expect(__builtin_object_size(trailing_1->c, 1), 4); + expect(__builtin_object_size(normal->c, 1), 4 * __SIZEOF_INT__); + expect(__builtin_object_size(trailing_1->c, 1), __SIZEOF_INT__); expect(__builtin_object_size(trailing_0->c, 1), 0); expect(__builtin_object_size(trailing_flex->c, 1), -1); } diff --git a/gcc/testsuite/gcc.dg/pr101836_2.c b/gcc/testsuite/gcc.dg/pr101836_2.c index 78974187721f..09079e6c0232 100644 --- a/gcc/testsuite/gcc.dg/pr101836_2.c +++ b/gcc/testsuite/gcc.dg/pr101836_2.c @@ -46,8 +46,8 @@ void __attribute__((__noinline__)) stuff( struct trailing_array_3 *trailing_0, struct trailing_array_4 *trailing_flex) { - expect(__builtin_object_size(normal->c, 1), 16); - expect(__builtin_object_size(trailing_1->c, 1), 4); + expect(__builtin_object_size(normal->c, 1), 4 * __SIZEOF_INT__); + expect(__builtin_object_size(trailing_1->c, 1), __SIZEOF_INT__); expect(__builtin_object_size(trailing_0->c, 1), -1); expect(__builtin_object_size(trailing_flex->c, 1), -1); } diff --git a/gcc/testsuite/gcc.dg/pr101836_3.c b/gcc/testsuite/gcc.dg/pr101836_3.c index 0e69388e81fb..63f50f757971 100644 --- a/gcc/testsuite/gcc.dg/pr101836_3.c +++ b/gcc/testsuite/gcc.dg/pr101836_3.c @@ -46,7 +46,7 @@ void __attribute__((__noinline__)) stuff( struct trailing_array_3 *trailing_0, struct trailing_array_4 *trailing_flex) { - expect(__builtin_object_size(normal->c, 1), 16); + expect(__builtin_object_size(normal->c, 1), 4 * __SIZEOF_INT__); expect(__builtin_object_size(trailing_1->c, 1), -1); expect(__builtin_object_size(trailing_0->c, 1), -1); expect(__builtin_object_size(trailing_flex->c, 1), -1); -- GitLab