[Mlir-commits] [mlir] [mlir][affine] fix the issue of ceildiv-mul-ceildiv form expression n… (PR #111254)

Johannes Reifferscheid llvmlistbot at llvm.org
Sun Oct 6 23:21:54 PDT 2024


================
@@ -406,12 +419,25 @@ static bool isDivisibleBySymbol(AffineExpr expr, unsigned symbolPos,
     AffineBinaryOpExpr binaryExpr = cast<AffineBinaryOpExpr>(expr);
     if (opKind != expr.getKind())
       return false;
-    return isDivisibleBySymbol(binaryExpr.getLHS(), symbolPos, expr.getKind());
+    if (llvm::any_of(visitedExprs, [](auto expr) {
+          return expr.getKind() == AffineExprKind::Mul;
+        }))
+      return false;
+    return isDivisibleBySymbolImpl(binaryExpr.getLHS(), symbolPos,
+                                   expr.getKind(), visitedExprs, depth + 1);
----------------
jreiffers wrote:

Maybe I'm missing something. Doesn't your call tree looks like this:

```             
              flag
+             false
   *          false
      s0      true
      2       true
   ceildiv    false
      s0      false
      2       false
```


https://github.com/llvm/llvm-project/pull/111254


More information about the Mlir-commits mailing list