Skip to content

Commit f681225

Browse files
[mlir][transform] Support symlinks in module loading. Reorganize tests. (#69329)
A recent commit (#69190) broke the bazel builds. Turns out that Bazel uses symlinks for providing the test files, which the path expansion of the module loading mechanism did not handle correctly. This PR fixes that. It also reorganizes the tests better: It puts all `.mlir` files that are included by some other test into a common `include` folder. This greatly simplifies the definition of the dependencies between the different `.mlir` files in Bazel's `BUILD` file. The commit also adds a comment to all included files why these aren't tested themselves direclty and uses the `%{fs-sep}` expansion for paths more consistently. Finally, it uncomments all but one of the tests excluded in Bazel because they seem to run now. (The remaining one includes a file that it itself a test, so it would have to live *in* and *outside* of the `include` folder.)
1 parent de65b6b commit f681225

15 files changed

+18
-25
lines changed

mlir/lib/Dialect/Transform/Transforms/TransformInterpreterUtils.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ LogicalResult transform::detail::expandPathsToMLIRFiles(
6161
it != itEnd && !ec; it.increment(ec)) {
6262
const std::string &fileName = it->path();
6363

64-
if (it->type() != llvm::sys::fs::file_type::regular_file) {
64+
if (it->type() != llvm::sys::fs::file_type::regular_file &&
65+
it->type() != llvm::sys::fs::file_type::symlink_file) {
6566
LLVM_DEBUG(DBGS() << " Skipping non-regular file '" << fileName
6667
<< "'\n");
6768
continue;

mlir/test/Dialect/Transform/Library/lower-to-llvm.mlir renamed to mlir/test/Dialect/Transform/include/Library/lower-to-llvm.mlir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// RUN: mlir-opt %s
2+
// No need to check anything else than parsing here, this is being used by another test as data.
23

34
/// Schedule to lower to LLVM.
45
module @lower_module_to_llvm attributes { transform.with_named_sequence } {

mlir/test/Dialect/Transform/test-interpreter-library/definitions-self-contained.mlir renamed to mlir/test/Dialect/Transform/include/test-interpreter-library/definitions-self-contained.mlir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// RUN: mlir-opt %s
2+
// No need to check anything else than parsing here, this is being used by another test as data.
23

34
module attributes {transform.with_named_sequence} {
45
transform.named_sequence private @private_helper(%arg0: !transform.any_op {transform.readonly}) {

mlir/test/Dialect/Transform/test-interpreter-library/definitions-with-unresolved.mlir renamed to mlir/test/Dialect/Transform/include/test-interpreter-library/definitions-with-unresolved.mlir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// RUN: mlir-opt %s
2+
// No need to check anything else than parsing here, this is being used by another test as data.
23

34
module attributes {transform.with_named_sequence} {
45
transform.named_sequence @print_message(%arg0: !transform.any_op {transform.readonly})

mlir/test/Dialect/Transform/preload-library.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: mlir-opt %s \
2-
// RUN: -transform-preload-library=transform-library-paths=%p%{fs-sep}test-interpreter-library \
2+
// RUN: -transform-preload-library=transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library \
33
// RUN: -transform-interpreter=entry-point=private_helper \
44
// RUN: -split-input-file -verify-diagnostics
55

mlir/test/Dialect/Transform/test-interpreter-external-concurrent.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(func.func(test-transform-dialect-interpreter{transform-file-name=%p/test-interpreter-external-concurrent-source.mlir}))" \
1+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(func.func(test-transform-dialect-interpreter{transform-file-name=%p%{fs-sep}include%{fs-sep}test-interpreter-external-concurrent-source.mlir}))" \
22
// RUN: --verify-diagnostics
33

44
// Exercising the pass on multiple functions of different lengths that may be

mlir/test/Dialect/Transform/test-interpreter-external-symbol-decl-and-schedule.mlir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-file-name=%p/test-interpreter-external-symbol-decl.mlir transform-library-paths=%p/test-interpreter-library/definitions-self-contained.mlir})" \
1+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-file-name=%p%{fs-sep}test-interpreter-external-symbol-decl.mlir transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library/definitions-self-contained.mlir})" \
22
// RUN: --verify-diagnostics
33

4-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-file-name=%p/test-interpreter-external-symbol-decl.mlir transform-library-paths=%p/test-interpreter-library/definitions-self-contained.mlir}, test-transform-dialect-interpreter{transform-file-name=%p/test-interpreter-external-symbol-decl.mlir transform-library-paths=%p/test-interpreter-library/definitions-self-contained.mlir})" \
4+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-file-name=%p%{fs-sep}test-interpreter-external-symbol-decl.mlir transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library/definitions-self-contained.mlir}, test-transform-dialect-interpreter{transform-file-name=%p%{fs-sep}test-interpreter-external-symbol-decl.mlir transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library/definitions-self-contained.mlir})" \
55
// RUN: --verify-diagnostics
66

77
// The external transform script has a declaration to the named sequence @foo,

mlir/test/Dialect/Transform/test-interpreter-external-symbol-decl-dir.mlir

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}test-interpreter-library})" \
1+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library})" \
22
// RUN: --verify-diagnostics --split-input-file | FileCheck %s
33

4-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}test-interpreter-library/definitions-self-contained.mlir,%p%{fs-sep}test-interpreter-library/definitions-with-unresolved.mlir})" \
4+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library/definitions-self-contained.mlir,%p%{fs-sep}include%{fs-sep}test-interpreter-library/definitions-with-unresolved.mlir})" \
55
// RUN: --verify-diagnostics --split-input-file | FileCheck %s
66

7-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}test-interpreter-library}, test-transform-dialect-interpreter)" \
7+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library}, test-transform-dialect-interpreter)" \
88
// RUN: --verify-diagnostics --split-input-file | FileCheck %s
99

1010
// The definition of the @foo named sequence is provided in another file. It

mlir/test/Dialect/Transform/test-interpreter-external-symbol-decl-invalid.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p/test-interpreter-external-symbol-def-invalid.mlir}, test-transform-dialect-interpreter)" \
1+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-external-symbol-def-invalid.mlir}, test-transform-dialect-interpreter)" \
22
// RUN: --verify-diagnostics --split-input-file
33

44
// The definition of the @print_message named sequence is provided in another file. It

mlir/test/Dialect/Transform/test-interpreter-external-symbol-decl.mlir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p/test-interpreter-library/definitions-self-contained.mlir})" \
1+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library/definitions-self-contained.mlir})" \
22
// RUN: --verify-diagnostics --split-input-file | FileCheck %s
33

4-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p/test-interpreter-library/definitions-self-contained.mlir}, test-transform-dialect-interpreter)" \
4+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-library-paths=%p%{fs-sep}include%{fs-sep}test-interpreter-library/definitions-self-contained.mlir}, test-transform-dialect-interpreter)" \
55
// RUN: --verify-diagnostics --split-input-file | FileCheck %s
66

77
// The definition of the @print_message named sequence is provided in another

mlir/test/Dialect/Transform/test-interpreter-external.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-file-name=%p/test-interpreter-external-source.mlir})" \
1+
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{transform-file-name=%p%{fs-sep}include%{fs-sep}test-interpreter-external-source.mlir})" \
22
// RUN: --verify-diagnostics
33

44
// The schedule in the separate file emits remarks at the payload root.

utils/bazel/llvm-project-overlay/mlir/test/Dialect/BUILD.bazel

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,16 @@ package(default_visibility = ["//visibility:public"])
1818
] + glob([
1919
"IRDL/*.irdl.mlir",
2020
"LLVM/*-symbol-def.mlir",
21-
"Transform/*-source.mlir",
22-
"Transform/*-symbol-def.mlir",
23-
"Transform/*-symbol-decl-and-schedule.mlir",
24-
"Transform/Library/*.mlir",
25-
"Transform/test-interpreter-library/*.mlir",
21+
"Transform/include/**/*.mlir",
2622
]),
2723
)
2824
for src in glob(
2925
include = ["**/*.mlir"],
3026
exclude = [
3127
"IRDL/*.irdl.mlir",
3228
"LLVM/*-symbol-def.mlir",
33-
"Transform/*-source.mlir",
34-
"Transform/*-symbol-def.mlir",
3529
"Transform/*-symbol-decl-and-schedule.mlir",
36-
"Transform/*-symbol-decl-dir.mlir",
37-
"Transform/*-symbol-decl-invalid.mlir",
38-
"Transform/Library/*.mlir",
39-
"Transform/preload-library.mlir",
40-
"Transform/test-interpreter-library/*.mlir",
41-
"Transform/test-repro-dump.mlir",
30+
"Transform/include/**/*.mlir",
4231
],
4332
)
4433
]

0 commit comments

Comments
 (0)