On Mon, 20 Mar 2023, Jakub Jelinek wrote: > On Tue, Mar 14, 2023 at 07:29:19AM +0000, Richard Biener via Gcc-patches > wrote: > > This is a reduced testcase for an issue I ran into when trying to > > improve PTA compile-time further, there wasn't any C family runfail > > in the testsuite for this. > > > > Pushed. > > > > * g++.dg/torture/20230313.C: New testcase. > > 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. > > Can we just change > --- gcc/testsuite/g++.dg/torture/20230313.C.jj 2023-03-14 > 12:24:55.930723588 +0100 > +++ gcc/testsuite/g++.dg/torture/20230313.C 2023-03-20 11:11:55.009044518 > +0100 > @@ -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> > > or does it go against what the testcase wants to verify?
That should be fine. Thanks, Richard.