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

Reply via email to