On Mon, 27 Jan 2025, Michael Matz wrote:

> Hello,
> 
> On Thu, 23 Jan 2025, Richard Biener wrote:
> 
> > When we get a zero distance vector we still have to check for the
> > situation of a common inner loop with zero distance.  But we can
> > still allow a zero distance for the loop we distribute
> > (gcc.dg/tree-ssa/ldist-33.c is such a case).  This is because
> > zero distances in non-outermost loops are a misrepresentation
> > of dependence by dependence analysis.
> 
> I think as long as that is the case your proposed changes makes sense.  
> But perhaps it's worth a comment to that effect, i.e. that because 
> dependence analysis is wonky (sometime using zero as unknown) we do these 
> "strange" tests.  At least for the occasional reader it will be 
> unintuitive why the obvious tests aren't working.

Like this?

diff --git a/gcc/tree-loop-distribution.cc b/gcc/tree-loop-distribution.cc
index 9d9d2ae592b..fc0cd3952d5 100644
--- a/gcc/tree-loop-distribution.cc
+++ b/gcc/tree-loop-distribution.cc
@@ -2193,7 +2193,9 @@ loop_distribution::pg_add_dependence_edges (struct 
graph *rdg, int dir,
                      this_dir = -this_dir;
                    }
                  /* When then dependence distance of the innermost common
-                    loop of the DRs is zero we have a conflict.  */
+                    loop of the DRs is zero we have a conflict.  This is
+                    due to wonky dependence analysis which sometimes
+                    ends up using a zero distance in place of unknown.  
*/
                  auto l1 = gimple_bb (DR_STMT (dr1))->loop_father;
                  auto l2 = gimple_bb (DR_STMT (dr2))->loop_father;
                  int idx = index_in_loop_nest (find_common_loop (l1, 
l2)->num,

Reply via email to