On Sun, Mar 9, 2025 at 1:35 PM Andrew Pinski <quic_apin...@quicinc.com> wrote: > > LLVM folks noticed that GCC was shrink wrapping the call to > vector<int>::push_back. > So I thought it was a good idea to commit a testcase to make sure GCC does > not regress > in this area unknowning. > > Note the shrink wrapping started with r15-1619-g3b9b8d6cfdf593. > Note this enables the testcase for x86_64 (!ia32), powerpc, aarch64 and riscv > which I tested > via godbolt to see the shrink wrapping occurs. Also tested the testcase for > both > x86_64-linux-gnu and aarch64-linux-gnu to make sure I got the target selects > correct.
Ping? > > Changes since v1: > * v2: Fix some comments typos that was mentioned in the bug report. > > PR rtl-optimization/118502 > > gcc/testsuite/ChangeLog: > > * g++.dg/opt/shrink-wrapping-vector-1.C: New test. > > Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com> > --- > .../g++.dg/opt/shrink-wrapping-vector-1.C | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > create mode 100644 gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C > > diff --git a/gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C > b/gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C > new file mode 100644 > index 00000000000..8b1ad53fa80 > --- /dev/null > +++ b/gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C > @@ -0,0 +1,17 @@ > +// { dg-do compile { target { { { i?86-*-* x86_64-*-* } && { ! ia32 } } || { > powerpc*-*-* aarch64*-*-* riscv*-*-* } } } } > +// { dg-options "-O2 -fdump-rtl-pro_and_epilogue" } > +// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } > + > +// PR rtl-optimization/118502 > + > +// The shrink-wrapping should happen around the slow path of > vector<int>::push_back, > +// The fast path is just checking if there is enough space and doing a few > stores. > +// We want to verify that shrink wrapping always happens. > + > +#include <vector> > + > +void push_back(std::vector<int>& xs, unsigned char x) { > + xs.push_back(x); > +} > + > +/* { dg-final { scan-rtl-dump "Performing shrink-wrapping" > "pro_and_epilogue" } } */ > -- > 2.43.0 >