diff --git a/mlir/lib/IR/OperationSupport.cpp b/mlir/lib/IR/OperationSupport.cpp index 31f71c3949003..91c62a6604c16 100644 --- a/mlir/lib/IR/OperationSupport.cpp +++ b/mlir/lib/IR/OperationSupport.cpp @@ -893,9 +893,9 @@ OperationEquivalence::isRegionEquivalentTo(Region *lhs, Region *rhs, // 4. Compare regions. for (auto regionPair : llvm::zip(lhs->getRegions(), rhs->getRegions())) - if (!isRegionEquivalentTo(&std::get<0>(regionPair), - &std::get<1>(regionPair), checkEquivalent, - markEquivalent, flags)) + if (!isRegionEquivalentTo( + &std::get<0>(regionPair), &std::get<1>(regionPair), checkEquivalent, + markEquivalent, flags, checkCommutativeEquivalent)) return false; return true; diff --git a/mlir/test/IR/operation-equality.mlir b/mlir/test/IR/operation-equality.mlir index 7bdbfdd19a62d..405701aafb127 100644 --- a/mlir/test/IR/operation-equality.mlir +++ b/mlir/test/IR/operation-equality.mlir @@ -187,6 +187,21 @@ // ----- +// CHECK-LABEL: test.commutatively_equal_permutation +// CHECK-SAME: compares equals + +builtin.module attributes {test.includes_setup} { + %0:2 = "test.producer"() : () -> (i32, i32) + "test.commutatively_equal_permutation"() ({ + arith.addi %0#0, %0#1 : i32 + }) : () -> () + "test.commutatively_equal_permutation"() ({ + arith.addi %0#1, %0#0 : i32 + }) : () -> () +} + +// ----- + // CHECK-LABEL: test.ignore_commutatively_equal_permutation // CHECK-SAME: compares NOT equals