https://gcc.gnu.org/g:20faea418d580d4db99aa5293c976ab16867aca5
commit r15-5238-g20faea418d580d4db99aa5293c976ab16867aca5 Author: Jan Hubicka <hubi...@ucw.cz> Date: Thu Nov 14 14:19:04 2024 +0100 Add testcases for std::vector optimization gcc/testsuite/ChangeLog: PR tree-optimization/110819 PR tree-optimization/116868 PR tree-optimization/58483 * g++.dg/tree-ssa/pr96945.C: cleanup * g++.dg/tree-ssa/pr110819.C: New test. * g++.dg/tree-ssa/pr116868.C: New test. * g++.dg/tree-ssa/pr58483.C: New test. Diff: --- gcc/testsuite/g++.dg/tree-ssa/pr110819.C | 14 ++++++++++++++ gcc/testsuite/g++.dg/tree-ssa/pr116868.C | 12 ++++++++++++ gcc/testsuite/g++.dg/tree-ssa/pr58483.C | 15 +++++++++++++++ gcc/testsuite/g++.dg/tree-ssa/pr96945.C | 4 ++-- 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr110819.C b/gcc/testsuite/g++.dg/tree-ssa/pr110819.C new file mode 100644 index 000000000000..04a074f1cb22 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr110819.C @@ -0,0 +1,14 @@ +// { dg-do compile { target c++14 } } +// { dg-options "-O1 -fdump-tree-optimized" } +#include<vector> + +void f(int); + +void use_idx_const_size_reserve() { + std::vector<int> v; + v.reserve(100000); + auto s = v.size(); + for (std::vector<int>::size_type i = 0; i < s; i++) + f(v[i]); +} +// { dg-final { scan-tree-dump-not "delete" "optimized" } } diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr116868.C b/gcc/testsuite/g++.dg/tree-ssa/pr116868.C new file mode 100644 index 000000000000..d89c7a3b09cc --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr116868.C @@ -0,0 +1,12 @@ +// { dg-do compile { target c++14 } } +// { dg-options "-O2 -fdump-tree-optimized" } +#include <vector> +int sumVector() { + const std::vector<int> vec = {1}; + int sum = 0; + for (int i = 0; i < vec.size(); i++) { + sum += vec[i]; + } + return sum; +} +// { dg-final { scan-tree-dump-not "delete" "optimized" } } diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr58483.C b/gcc/testsuite/g++.dg/tree-ssa/pr58483.C new file mode 100644 index 000000000000..c99664b57577 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr58483.C @@ -0,0 +1,15 @@ +// { dg-do compile { target c++14 } } +// { dg-do compile } +// { dg-options "-O1 -fdump-tree-optimized" } +#include<vector> + +void f(int); + +void use_idx_const_size_reserve() { + std::vector<int> v; + v.reserve(100000); + auto s = v.size(); + for (std::vector<int>::size_type i = 0; i < s; i++) + f(v[i]); +} +// { dg-final { scan-tree-dump-not "delete" "optimized" } } diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr96945.C b/gcc/testsuite/g++.dg/tree-ssa/pr96945.C index 4cb234c2f711..63d55672e0c2 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr96945.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr96945.C @@ -1,5 +1,5 @@ -/* { dg-do compile } */ -// { dg-options "-O1 -fdump-tree-optimized -std=c++14" } +// { dg-do compile { target c++14 } } +// { dg-options "-O1 -fdump-tree-optimized" } #include <vector> struct c { c() = default;