https://gcc.gnu.org/g:77c3ef08e946306329070ea6415abe7d9e328cd6
commit r15-4032-g77c3ef08e946306329070ea6415abe7d9e328cd6 Author: Georg-Johann Lay <a...@gjlay.de> Date: Wed Oct 2 19:09:18 2024 +0200 testsuite/52641 - Make gcc.dg/strict-flex-array-3.c work on int != 32 bits. PR testsuite/52641 gcc/testsuite/ * gcc.dg/strict-flex-array-3.c (expect) [AVR]: Use custom version due to AVR-LibC limitations. (stuff): Use __SIZEOF_INT__ instead of hard-coded values. Diff: --- gcc/testsuite/gcc.dg/strict-flex-array-3.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/gcc.dg/strict-flex-array-3.c b/gcc/testsuite/gcc.dg/strict-flex-array-3.c index f74ed96c751c..064f779501a8 100644 --- a/gcc/testsuite/gcc.dg/strict-flex-array-3.c +++ b/gcc/testsuite/gcc.dg/strict-flex-array-3.c @@ -17,6 +17,21 @@ } \ } while (0); +#ifdef __AVR__ +/* AVR-Libc doesn't support %zd, thus use %d for size_t. */ +#undef expect +#define expect(p, _v) do { \ + size_t v = _v; \ + if (p == v) \ + __builtin_printf ("ok: %s == %d\n", #p, p); \ + else \ + { \ + __builtin_printf ("WAT: %s == %d (expected %d)\n", #p, p, v); \ + FAIL (); \ + } \ +} while (0); +#endif /* AVR */ + struct trailing_array_1 { int a; int b; @@ -46,8 +61,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); }