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.
--- /dev/null
+// { 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" } }
--- /dev/null
+// { 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" } }
--- /dev/null
+// { 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" } }
-/* { 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;