testcase: Add testcase for shrink wrapping of vector<int>::push_back [PR118502]
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. 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_apinski@quicinc.com>
This commit is contained in:
parent
992be16d83
commit
33b255a1aa
1 changed files with 17 additions and 0 deletions
17
gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C
Normal file
17
gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C
Normal file
|
@ -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" } } */
|
Loading…
Add table
Reference in a new issue