aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '14.0.0/gentoo/77_all_PR113808-middle-end-don-t-cache-restart_loop-in-vectorizable.patch')
-rw-r--r--14.0.0/gentoo/77_all_PR113808-middle-end-don-t-cache-restart_loop-in-vectorizable.patch93
1 files changed, 0 insertions, 93 deletions
diff --git a/14.0.0/gentoo/77_all_PR113808-middle-end-don-t-cache-restart_loop-in-vectorizable.patch b/14.0.0/gentoo/77_all_PR113808-middle-end-don-t-cache-restart_loop-in-vectorizable.patch
deleted file mode 100644
index 1983aa7..0000000
--- a/14.0.0/gentoo/77_all_PR113808-middle-end-don-t-cache-restart_loop-in-vectorizable.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From ce2e742d5439c3f70f6ff641164541e506c808d1 Mon Sep 17 00:00:00 2001
-From: Tamar Christina <tamar.christina@arm.com>
-Date: Thu, 8 Feb 2024 10:43:13 +0000
-Subject: [PATCH 3/3] middle-end: don't cache restart_loop in
- vectorizable_live_operations [PR113808]
-
-There's a bug in vectorizable_live_operation that restart_loop is defined
-outside the loop.
-
-This variable is supposed to indicate whether we are doing a first or last
-index reduction. The problem is that by defining it outside the loop it becomes
-dependent on the order we visit the USE/DEFs.
-
-In the given example, the loop isn't PEELED, but we visit the early exit uses
-first. This then sets the boolean to true and it can't get to false again.
-
-So when we visit the main exit we still treat it as an early exit for that
-SSA name.
-
-This cleans it up and renames the variables to something that's hopefully
-clearer to their intention.
-
-gcc/ChangeLog:
-
- PR tree-optimization/113808
- * tree-vect-loop.cc (vectorizable_live_operation): Don't cache the
- value cross iterations.
-
-gcc/testsuite/ChangeLog:
-
- PR tree-optimization/113808
- * gfortran.dg/vect/vect-early-break_1-PR113808.f90: New test.
-
-(cherry picked from commit 3f69db1812106cb5bab203e17a60300ac51cdc68)
----
- .../vect/vect-early-break_1-PR113808.f90 | 21 +++++++++++++++++++
- gcc/tree-vect-loop.cc | 5 ++---
- 2 files changed, 23 insertions(+), 3 deletions(-)
- create mode 100644 gcc/testsuite/gfortran.dg/vect/vect-early-break_1-PR113808.f90
-
-diff --git a/gcc/testsuite/gfortran.dg/vect/vect-early-break_1-PR113808.f90 b/gcc/testsuite/gfortran.dg/vect/vect-early-break_1-PR113808.f90
-new file mode 100644
-index 000000000000..5c339fa7a348
---- /dev/null
-+++ b/gcc/testsuite/gfortran.dg/vect/vect-early-break_1-PR113808.f90
-@@ -0,0 +1,21 @@
-+! { dg-add-options vect_early_break }
-+! { dg-require-effective-target vect_early_break }
-+! { dg-require-effective-target vect_long_long }
-+! { dg-additional-options "-fopenmp-simd" }
-+
-+! { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } }
-+
-+program main
-+ integer :: n, i,k
-+ n = 11
-+ do i = 1, n,2
-+ !$omp simd lastprivate(k)
-+ do k = 1, i + 41
-+ if (k > 11 + 41 .or. k < 1) error stop
-+ end do
-+ end do
-+ if (k /= 53) then
-+ print *, k, 53
-+ error stop
-+ endif
-+end
-diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
-index 190df9ec7741..eed2268e9bae 100644
---- a/gcc/tree-vect-loop.cc
-+++ b/gcc/tree-vect-loop.cc
-@@ -10950,7 +10950,7 @@ vectorizable_live_operation (vec_info *vinfo, stmt_vec_info stmt_info,
- did. For the live values we want the value at the start of the iteration
- rather than at the end. */
- edge main_e = LOOP_VINFO_IV_EXIT (loop_vinfo);
-- bool restart_loop = LOOP_VINFO_EARLY_BREAKS_VECT_PEELED (loop_vinfo);
-+ bool all_exits_as_early_p = LOOP_VINFO_EARLY_BREAKS_VECT_PEELED (loop_vinfo);
- FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, lhs)
- if (!is_gimple_debug (use_stmt)
- && !flow_bb_inside_loop_p (loop, gimple_bb (use_stmt)))
-@@ -10966,8 +10966,7 @@ vectorizable_live_operation (vec_info *vinfo, stmt_vec_info stmt_info,
- /* For early exit where the exit is not in the BB that leads
- to the latch then we're restarting the iteration in the
- scalar loop. So get the first live value. */
-- restart_loop = restart_loop || !main_exit_edge;
-- if (restart_loop
-+ if ((all_exits_as_early_p || !main_exit_edge)
- && STMT_VINFO_DEF_TYPE (stmt_info) == vect_induction_def)
- {
- tmp_vec_lhs = vec_lhs0;
---
-2.43.0
-