Loop distribution fix for SCC detection

Message ID 20231114115941.5B7D13856DE7@sourceware.org
State Accepted
Headers
Series Loop distribution fix for SCC detection |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Richard Biener Nov. 14, 2023, 11:59 a.m. UTC
  The following adjusts data_dep_in_cycle_p to properly consider the
whole loop nest when looking for data dep cycles and exempting
zero-distance DDRs instead of just the outermost loop.

Bootstrap & regtest running on x86_64-unknown-linux-gnu.

	* tree-loop-distribution.cc (loop_distribution::data_dep_in_cycle_p):
	Consider all loops in the nest when looking for
	lambda_vector_zerop.
---
 gcc/tree-loop-distribution.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/gcc/tree-loop-distribution.cc b/gcc/tree-loop-distribution.cc
index 8e92af61c57..5ededd97c3d 100644
--- a/gcc/tree-loop-distribution.cc
+++ b/gcc/tree-loop-distribution.cc
@@ -1440,7 +1440,7 @@  loop_distribution::data_dep_in_cycle_p (struct graph *rdg,
   else if (DDR_NUM_DIST_VECTS (ddr) > 1)
     return true;
   else if (DDR_REVERSED_P (ddr)
-	   || lambda_vector_zerop (DDR_DIST_VECT (ddr, 0), 1))
+	   || lambda_vector_zerop (DDR_DIST_VECT (ddr, 0), DDR_NB_LOOPS (ddr)))
     return false;
 
   return true;