]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/123315 - reset LOOP_VINFO_USING_DECREMENTING_IV_P
authorRichard Biener <rguenther@suse.de>
Tue, 6 Jan 2026 12:39:30 +0000 (13:39 +0100)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 7 Jan 2026 08:18:28 +0000 (09:18 +0100)
The following resets LOOP_VINFO_USING_DECREMENTING_IV_P before
re-trying.

PR tree-optimization/123315
* tree-vect-loop.cc (vect_analyze_loop_2): Reset
LOOP_VINFO_USING_DECREMENTING_IV_P before retrying.

* g++.dg/vect/pr123315.cc: New testcase.

gcc/testsuite/g++.dg/vect/pr123315.cc [new file with mode: 0644]
gcc/tree-vect-loop.cc

diff --git a/gcc/testsuite/g++.dg/vect/pr123315.cc b/gcc/testsuite/g++.dg/vect/pr123315.cc
new file mode 100644 (file)
index 0000000..e960797
--- /dev/null
@@ -0,0 +1,18 @@
+// { dg-do compile }
+// { dg-additional-options "-O3 -fvect-cost-model=dynamic" }
+
+short a, b, c;
+long long e, f;
+extern int g[][2][2][23];
+inline long max(long a, long b)
+{
+  return a > b ? a : b;
+}
+void h(unsigned d)
+{
+  for (; d < 23; d++) {
+      c = b ?: g[1][1][1][d];
+      e = max(e, (long long)a);
+      f = max(f, (long long)7);
+  }
+}
index 994d1a3ee749e5cc745bd864b4bc08c93d43ae0f..0333964175041ef924f6a8c0adc5a4484ee559c3 100644 (file)
@@ -2730,6 +2730,8 @@ again:
   LOOP_VINFO_MUST_USE_PARTIAL_VECTORS_P (loop_vinfo) = false;
   LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) = false;
   LOOP_VINFO_USING_SELECT_VL_P (loop_vinfo) = false;
+  LOOP_VINFO_USING_DECREMENTING_IV_P (loop_vinfo) = false;
+
   if (loop_vinfo->scan_map)
     loop_vinfo->scan_map->empty ();