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);
 }

Reply via email to