]> git.ipfire.org Git - people/ms/gcc.git/commitdiff
testsuite: Fix up 20230313.C test
authorJakub Jelinek <jakub@redhat.com>
Mon, 20 Mar 2023 11:38:43 +0000 (12:38 +0100)
committerJakub Jelinek <jakub@redhat.com>
Mon, 20 Mar 2023 11:38:43 +0000 (12:38 +0100)
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)].

gcc/testsuite/g++.dg/torture/20230313.C

index d1f348003bdd5f5b936caa2ed97afa78e915326d..99887ab0a3b07201072dce84e7a9fcaac95a8054 100644 (file)
@@ -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>