[gcc r13-6760] testsuite: Fix up 20230313.C test

Jakub Jelinek jakub@gcc.gnu.org
Mon Mar 20 11:40:05 GMT 2023


https://gcc.gnu.org/g:e19234f464676efea383c8ef34c61dd18f2da108

commit r13-6760-ge19234f464676efea383c8ef34c61dd18f2da108
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Mon Mar 20 12:38:43 2023 +0100

    testsuite: Fix up 20230313.C test
    
    I've noticed this testcase FAILs on i686-linux with
    -fstack-protector-strong.
    
    sizeof (auto_vec<int, 8>) == 16, which in this case contains
    4-byte m_vec (which points to to m_auto), then 8-byte m_auto
    which contains just 8-byte m_vecpfx and finally 1 byte m_data,
    rest is padding.  We then try to push 2 ints to it, so 8 bytes,
    starting at the end of m_vecpfx aka address of m_data, but there
    is just 1 byte + 3 bytes of padding.
    In the lp64 case, I think sizeof (auto_vec<int, 8>) == 24,
    because there is 8-byte m_vec, 8-byte m_vecpfx and 1-byte m_char
    all with 8-byte alignment.
    
    2023-03-20  Jakub Jelinek  <jakub@redhat.com>
    
            * g++.dg/torture/20230313.C (auto_vec): Change m_data type
            from char to char [2 * sizeof (int)].

Diff:
---
 gcc/testsuite/g++.dg/torture/20230313.C | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/testsuite/g++.dg/torture/20230313.C b/gcc/testsuite/g++.dg/torture/20230313.C
index d1f348003bd..99887ab0a3b 100644
--- a/gcc/testsuite/g++.dg/torture/20230313.C
+++ b/gcc/testsuite/g++.dg/torture/20230313.C
@@ -60,7 +60,7 @@ struct auto_vec : vec<T, va_heap>
     this->release ();
   }
   vec<T, va_heap, int> m_auto;
-  char m_data;
+  char m_data[2 * sizeof (int)];
 };
 template<typename T>
 struct vec<T, va_heap>


More information about the Gcc-cvs mailing list