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
>

Reply via email to