Files
clang-p2996/mlir/test/Dialect/Transform/test-interpreter-external-concurrent-source.mlir
Alex Zinenko b7895f9ded [mlir] properly fix concurrent transform interpreter pass base
The original implementation of the transform interpreter pass base was
cloning the entire transform IR in presence of PDL-related operations to
avoid concurrency issues when running the pass with the same transform
IR on multiple operations of the payload IR. The root cause of those
issues is the `transform.pdl_match` operation that was moving the PDL
pattern definition operation into a new module, consumed by the PDL
interpreter and leading to a race. Clone the pattern operation instead.
This avoids the race as well as the cost for transform IR that doesn't
use PDL.

Depends on D142729.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D142962
2023-02-03 14:12:34 +00:00

17 lines
580 B
MLIR

// RUN: mlir-opt %s
// No need to check anything else than parsing here, this is being used by another test as data.
transform.with_pdl_patterns {
^bb0(%arg0: !transform.any_op):
pdl.pattern @func_return : benefit(1) {
%0 = pdl.operation "func.return"
pdl.rewrite %0 with "transform.dialect"
}
sequence %arg0 : !transform.any_op failures(propagate) {
^bb1(%arg1: !transform.any_op):
%0 = pdl_match @func_return in %arg1 : (!transform.any_op) -> !transform.op<"func.return">
test_print_remark_at_operand %0, "matched" : !transform.op<"func.return">
}
}