On Wed, Nov 13, 2024 at 02:59:05PM +0100, Jan Hubicka wrote: > > On Tue, Nov 12, 2024 at 04:00:03PM +0100, Jan Hubicka wrote: > > > Hi, > > > with __builtin_operator_new we now can optimize away unused std::vectors. > > > This adds testcases mentioned in the PR. > > > > > > Regtested x86_64-linux and comitted. > > > > > > PR tree-optimization/96945 > > > > > > gcc/testsuite/ChangeLog: > > > > > > * g++.dg/tree-ssa/pr96945.C: New test. > > > > > > diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr96945.C > > > b/gcc/testsuite/g++.dg/tree-ssa/pr96945.C > > > new file mode 100644 > > > index 00000000000..4cb234c2f71 > > > --- /dev/null > > > +++ b/gcc/testsuite/g++.dg/tree-ssa/pr96945.C > > > @@ -0,0 +1,60 @@ > > > +/* { dg-do compile } */ > > > +// { dg-options "-O1 -fdump-tree-optimized -std=c++14" } > > > > The normal way would be > > // { dg-do compile { target c++14 } } > > // { dg-options "-O1 -fdump-tree-optimized" } > > so that it tests all C++ versions >= 14, not just one particular, > > and doesn't mix comment styles. > Ah, sorry for that. I copied it and edited from somewhere without much > of thinking. In fact I think we should add the other examples from > various PRs, since they are testing slightly different cases and this > optimization depends on inlining and EH which may be bit fragile. > > If there are no complains I will commit the following tomorrow > > Add more std::vector optimization tests > > 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 --git a/gcc/testsuite/g++.dg/tree-ssa/pr110819.C > b/gcc/testsuite/g++.dg/tree-ssa/pr110819.C > new file mode 100644 > index 00000000000..04a074f1cb2 > --- /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 00000000000..d89c7a3b09c > --- /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 00000000000..c99664b5757 > --- /dev/null > +++ b/gcc/testsuite/g++.dg/tree-ssa/pr58483.C > @@ -0,0 +1,15 @@ > +// { dg-do compile { target c++14 } } > +// { dg-do compile }
This test FAILs due to the second dg-do compile: FAIL: g++.dg/tree-ssa/pr58483.C -std=gnu++98 (test for excess errors) and it passes in C++11 as well. Tested x86_64-pc-linux-gnu, applying to trunk. -- >8 -- This test mistakenly used two dg-do compile. Since it passes in C++11 as well, we can run it in C++11 and up. gcc/testsuite/ChangeLog: * g++.dg/tree-ssa/pr58483.C: Run in C++11 and up. --- gcc/testsuite/g++.dg/tree-ssa/pr58483.C | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr58483.C b/gcc/testsuite/g++.dg/tree-ssa/pr58483.C index c99664b5757..c0e8495ca54 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr58483.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr58483.C @@ -1,5 +1,4 @@ -// { dg-do compile { target c++14 } } -// { dg-do compile } +// { dg-do compile { target c++11 } } // { dg-options "-O1 -fdump-tree-optimized" } #include<vector> base-commit: e0a402b3e28545abe8b190fb84ccc180d0744b13 -- 2.47.0