Skip to content

Commit 4e6ee0b

Browse files
authored
[MLIR] Fix test failures for generate-runtime-verification pass from PR #160331 (#162533)
[MLIR] Fix test failures for generate-runtime-verification pass from PR #160331 PR #160331 introduced a mistake that removed the error message for generate-runtime-verification pass, leading to test failures during `test-build-check-mlir-build-only-check-mlir`. This patch restores the missing error message. In addition, for related tests, the op strings used in FileChecks are updated with the same op formats as used in input mlirs. Verified locally. Fixes post-merge regression from: #160331
1 parent a2723dd commit 4e6ee0b

14 files changed

+41
-37
lines changed

mlir/lib/Transforms/GenerateRuntimeVerification.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ class DefaultErrMsgGenerator {
5151
stream << "ERROR: Runtime op verification failed\n";
5252
if (vLevel == 1) {
5353
op->print(stream, state);
54-
stream << "\n";
54+
stream << "\n^ " << msg;
55+
} else {
56+
stream << "^ " << msg;
5557
}
56-
stream << "^\nLocation: ";
58+
stream << "\nLocation: ";
5759
op->getLoc().print(stream);
5860
return buffer;
5961
}

mlir/test/Dialect/Linalg/runtime-verification.mlir

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ func.func @static_dims(%arg0: tensor<5xf32>, %arg1: tensor<5xf32>) -> (tensor<5x
1212
// CHECK: cf.assert %[[TRUE]]
1313
// VERBOSE0: %[[TRUE:.*]] = index.bool.constant true
1414
// VERBOSE0: cf.assert %[[TRUE]]
15-
// VERBOSE0-SAME: ERROR: Runtime op verification failed\0A^\0ALocation: loc(
15+
// VERBOSE0-SAME: ERROR: Runtime op verification failed\0A^ unexpected negative result on dimension #0
16+
// VERBOSE0-SAME: Location
17+
// VERBOSE0-SAME: 19:10
1618
%result = tensor.empty() : tensor<5xf32>
1719
%0 = linalg.generic {
1820
indexing_maps = [#identity, #identity, #identity],

mlir/test/Integration/Dialect/MemRef/assume-alignment-runtime-verification.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func.func @main() {
3838
%buffer = builtin.unrealized_conversion_cast %10 : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> to memref<1xf32>
3939

4040
// CHECK: ERROR: Runtime op verification failed
41-
// CHECK-NEXT: %[[ASSUME:.*]] = "memref.assume_alignment"(%{{.*}}) <{alignment = 4 : i32}> : (memref<1xf32>)
41+
// CHECK-NEXT: %[[ASSUME:.*]] = memref.assume_alignment %{{.*}}, 4 : memref<1xf32>
4242
// CHECK-NEXT: ^ memref is not aligned to 4
4343
// CHECK-NEXT: Location: loc({{.*}})
4444
%assume = memref.assume_alignment %buffer, 4 : memref<1xf32>

mlir/test/Integration/Dialect/MemRef/atomic-rmw-runtime-verification.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func.func @main() {
4141
%cast = memref.cast %buffer : memref<5xf32> to memref<?xf32>
4242

4343
// CHECK: ERROR: Runtime op verification failed
44-
// CHECK-NEXT: "memref.atomic_rmw"(%{{.*}}, %{{.*}}, %{{.*}}) <{kind = 0 : i64}> : (f32, memref<?xf32>, index) -> f32
44+
// CHECK-NEXT: memref.atomic_rmw addf %{{.*}}, %{{.*}} : (f32, memref<?xf32>) -> f32
4545
// CHECK-NEXT: ^ out-of-bounds access
4646
// CHECK-NEXT: Location: loc({{.*}})
4747
%c9 = arith.constant 9 : index

mlir/test/Integration/Dialect/MemRef/cast-runtime-verification.mlir

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,26 +43,26 @@ func.func @main() {
4343
%alloc = memref.alloc() : memref<5xf32>
4444

4545
// CHECK: ERROR: Runtime op verification failed
46-
// CHECK-NEXT: "memref.cast"(%{{.*}}) : (memref<?xf32>) -> memref<10xf32>
46+
// CHECK-NEXT: memref.cast %{{.*}} : memref<?xf32> to memref<10xf32>
4747
// CHECK-NEXT: ^ size mismatch of dim 0
4848
// CHECK-NEXT: Location: loc({{.*}})
4949
%1 = memref.cast %alloc : memref<5xf32> to memref<?xf32>
5050
func.call @cast_to_static_dim(%1) : (memref<?xf32>) -> (memref<10xf32>)
5151

5252
// CHECK-NEXT: ERROR: Runtime op verification failed
53-
// CHECK-NEXT: "memref.cast"(%{{.*}}) : (memref<*xf32>) -> memref<f32>
53+
// CHECK-NEXT: memref.cast %{{.*}} : memref<*xf32> to memref<f32>
5454
// CHECK-NEXT: ^ rank mismatch
5555
// CHECK-NEXT: Location: loc({{.*}})
5656
%3 = memref.cast %alloc : memref<5xf32> to memref<*xf32>
5757
func.call @cast_to_ranked(%3) : (memref<*xf32>) -> (memref<f32>)
5858

5959
// CHECK-NEXT: ERROR: Runtime op verification failed
60-
// CHECK-NEXT: "memref.cast"(%{{.*}}) : (memref<?xf32, strided<[?], offset: ?>>) -> memref<?xf32, strided<[9], offset: 5>>
60+
// CHECK-NEXT: memref.cast %{{.*}} : memref<?xf32, strided<[?], offset: ?>>
6161
// CHECK-NEXT: ^ offset mismatch
6262
// CHECK-NEXT: Location: loc({{.*}})
6363

6464
// CHECK-NEXT: ERROR: Runtime op verification failed
65-
// CHECK-NEXT: "memref.cast"(%{{.*}}) : (memref<?xf32, strided<[?], offset: ?>>) -> memref<?xf32, strided<[9], offset: 5>>
65+
// CHECK-NEXT: memref.cast %{{.*}} : memref<?xf32, strided<[?], offset: ?>>
6666
// CHECK-NEXT: ^ stride mismatch of dim 0
6767
// CHECK-NEXT: Location: loc({{.*}})
6868
%4 = memref.cast %alloc

mlir/test/Integration/Dialect/MemRef/copy-runtime-verification.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func.func @main() {
2828
%cast2 = memref.cast %alloca2 : memref<5xf32> to memref<?xf32>
2929

3030
// CHECK: ERROR: Runtime op verification failed
31-
// CHECK-NEXT: "memref.copy"(%{{.*}}, %{{.*}}) : (memref<?xf32>, memref<?xf32>) -> ()
31+
// CHECK-NEXT: memref.copy %{{.*}}, %{{.*}} : memref<?xf32> to memref<?xf32>
3232
// CHECK-NEXT: ^ size of 0-th source/target dim does not match
3333
// CHECK-NEXT: Location: loc({{.*}})
3434
call @memcpy_helper(%cast1, %cast2) : (memref<?xf32>, memref<?xf32>) -> ()

mlir/test/Integration/Dialect/MemRef/dim-runtime-verification.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func.func @main() {
2020
%alloca = memref.alloca() : memref<1xf32>
2121

2222
// CHECK: ERROR: Runtime op verification failed
23-
// CHECK-NEXT: "memref.dim"(%{{.*}}, %{{.*}}) : (memref<1xf32>, index) -> index
23+
// CHECK-NEXT: memref.dim %{{.*}}, %{{.*}} : memref<1xf32>
2424
// CHECK-NEXT: ^ index is out of bounds
2525
// CHECK-NEXT: Location: loc({{.*}})
2626
%dim = memref.dim %alloca, %c4 : memref<1xf32>

mlir/test/Integration/Dialect/MemRef/load-runtime-verification.mlir

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,19 @@ func.func @main() {
4040
%alloc_2x2x2 = memref.alloc(%2, %2, %2) : memref<?x?x?xf32>
4141

4242
// CHECK: ERROR: Runtime op verification failed
43-
// CHECK-NEXT: "memref.load"(%{{.*}}, %{{.*}}) : (memref<1xf32>, index) -> f32
43+
// CHECK-NEXT: memref.load %{{.*}}[%{{.*}}] : memref<1xf32>
4444
// CHECK-NEXT: ^ out-of-bounds access
4545
// CHECK-NEXT: Location: loc({{.*}})
4646
func.call @load(%alloca_1, %1) : (memref<1xf32>, index) -> ()
4747

4848
// CHECK: ERROR: Runtime op verification failed
49-
// CHECK-NEXT: "memref.load"(%{{.*}}, %{{.*}}) : (memref<?xf32>, index) -> f32
49+
// CHECK-NEXT: memref.load %{{.*}}[%{{.*}}] : memref<?xf32>
5050
// CHECK-NEXT: ^ out-of-bounds access
5151
// CHECK-NEXT: Location: loc({{.*}})
5252
func.call @load_dynamic(%alloc_1, %1) : (memref<?xf32>, index) -> ()
5353

5454
// CHECK: ERROR: Runtime op verification failed
55-
// CHECK-NEXT: "memref.load"(%{{.*}}, %{{.*}}) : (memref<?x?x?xf32>, index, index, index) -> f32
55+
// CHECK-NEXT: memref.load %{{.*}}[%{{.*}}] : memref<?x?x?xf32>
5656
// CHECK-NEXT: ^ out-of-bounds access
5757
// CHECK-NEXT: Location: loc({{.*}})
5858
func.call @load_nd_dynamic(%alloc_2x2x2, %1, %n1, %0) : (memref<?x?x?xf32>, index, index, index) -> ()

mlir/test/Integration/Dialect/MemRef/store-runtime-verification.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func.func @main() {
4141
%cast = memref.cast %buffer : memref<5xf32> to memref<?xf32>
4242

4343
// CHECK: ERROR: Runtime op verification failed
44-
// CHECK-NEXT: "memref.store"(%{{.*}}, %{{.*}}, %{{.*}}) : (f32, memref<?xf32>, index) -> ()
44+
// CHECK-NEXT: memref.store %{{.*}}, %{{.*}}[%{{.*}}] : memref<?xf32>
4545
// CHECK-NEXT: ^ out-of-bounds access
4646
// CHECK-NEXT: Location: loc({{.*}})
4747
%c9 = arith.constant 9 : index

mlir/test/Integration/Dialect/MemRef/subview-runtime-verification.mlir

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,47 +51,47 @@ func.func @main() {
5151

5252
// Offset is out-of-bounds and slice runs out-of-bounds
5353
// CHECK: ERROR: Runtime op verification failed
54-
// CHECK-NEXT: "memref.subview"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) <{operandSegmentSizes = array<i32: 1, 1, 1, 1>, static_offsets = array<i64: -9223372036854775808, 0>, static_sizes = array<i64: -9223372036854775808, 1>, static_strides = array<i64: -9223372036854775808, 1>}> : (memref<?x4xf32>, index, index, index) -> memref<?xf32, strided<[?], offset: ?>>
54+
// CHECK-NEXT: memref.subview %{{.*}}[%{{.*}}, 0] [%{{.*}}, 1] [%{{.*}}, 1] : memref<?x4xf32> to memref<?xf32, strided<[?], offset: ?>>
5555
// CHECK-NEXT: ^ offset 0 is out-of-bounds
5656
// CHECK-NEXT: Location: loc({{.*}})
5757
// CHECK: ERROR: Runtime op verification failed
58-
// CHECK-NEXT: "memref.subview"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) <{operandSegmentSizes = array<i32: 1, 1, 1, 1>, static_offsets = array<i64: -9223372036854775808, 0>, static_sizes = array<i64: -9223372036854775808, 1>, static_strides = array<i64: -9223372036854775808, 1>}> : (memref<?x4xf32>, index, index, index) -> memref<?xf32, strided<[?], offset: ?>>
58+
// CHECK-NEXT: memref.subview %{{.*}}[%{{.*}}, 0] [%{{.*}}, 1] [%{{.*}}, 1] : memref<?x4xf32> to memref<?xf32, strided<[?], offset: ?>>
5959
// CHECK-NEXT: ^ subview runs out-of-bounds along dimension 0
6060
// CHECK-NEXT: Location: loc({{.*}})
6161
func.call @subview_dynamic_rank_reduce(%alloca_4_dyn, %5, %5, %1) : (memref<?x4xf32>, index, index, index) -> ()
6262

6363
// Offset is out-of-bounds and slice runs out-of-bounds
6464
// CHECK: ERROR: Runtime op verification failed
65-
// CHECK-NEXT: "memref.subview"(%{{.*}}, %{{.*}}) <{operandSegmentSizes = array<i32: 1, 1, 0, 0>, static_offsets = array<i64: -9223372036854775808>, static_sizes = array<i64: 1>, static_strides = array<i64: 1>}> : (memref<1xf32>, index) -> memref<1xf32, strided<[1], offset: ?>>
65+
// CHECK-NEXT: memref.subview %{{.*}}[%{{.*}}] [1] [1] : memref<1xf32> to memref<1xf32, strided<[1], offset: ?>>
6666
// CHECK-NEXT: ^ offset 0 is out-of-bounds
6767
// CHECK-NEXT: Location: loc({{.*}})
6868
// CHECK: ERROR: Runtime op verification failed
69-
// CHECK-NEXT: "memref.subview"(%{{.*}}, %{{.*}}) <{operandSegmentSizes = array<i32: 1, 1, 0, 0>, static_offsets = array<i64: -9223372036854775808>, static_sizes = array<i64: 1>, static_strides = array<i64: 1>}> : (memref<1xf32>, index) -> memref<1xf32, strided<[1], offset: ?>>
69+
// CHECK-NEXT: memref.subview %{{.*}}[%{{.*}}] [1] [1] : memref<1xf32> to memref<1xf32, strided<[1], offset: ?>>
7070
// CHECK-NEXT: ^ subview runs out-of-bounds along dimension 0
7171
// CHECK-NEXT: Location: loc({{.*}})
7272
func.call @subview(%alloca, %1) : (memref<1xf32>, index) -> ()
7373

7474
// Offset is out-of-bounds and slice runs out-of-bounds
7575
// CHECK: ERROR: Runtime op verification failed
76-
// CHECK-NEXT: "memref.subview"(%{{.*}}, %{{.*}}) <{operandSegmentSizes = array<i32: 1, 1, 0, 0>, static_offsets = array<i64: -9223372036854775808>, static_sizes = array<i64: 1>, static_strides = array<i64: 1>}> : (memref<1xf32>, index) -> memref<1xf32, strided<[1], offset: ?>>
76+
// CHECK-NEXT: memref.subview %{{.*}}[%{{.*}}] [1] [1] : memref<1xf32> to memref<1xf32, strided<[1], offset: ?>>
7777
// CHECK-NEXT: ^ offset 0 is out-of-bounds
7878
// CHECK-NEXT: Location: loc({{.*}})
7979
// CHECK: ERROR: Runtime op verification failed
80-
// CHECK-NEXT: "memref.subview"(%{{.*}}, %{{.*}}) <{operandSegmentSizes = array<i32: 1, 1, 0, 0>, static_offsets = array<i64: -9223372036854775808>, static_sizes = array<i64: 1>, static_strides = array<i64: 1>}> : (memref<1xf32>, index) -> memref<1xf32, strided<[1], offset: ?>>
80+
// CHECK-NEXT: memref.subview %{{.*}}[%{{.*}}] [1] [1] : memref<1xf32> to memref<1xf32, strided<[1], offset: ?>>
8181
// CHECK-NEXT: ^ subview runs out-of-bounds along dimension 0
8282
// CHECK-NEXT: Location: loc({{.*}})
8383
func.call @subview(%alloca, %n1) : (memref<1xf32>, index) -> ()
8484

8585
// Slice runs out-of-bounds due to size
8686
// CHECK: ERROR: Runtime op verification failed
87-
// CHECK-NEXT: "memref.subview"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) <{operandSegmentSizes = array<i32: 1, 1, 1, 1>, static_offsets = array<i64: -9223372036854775808, 0>, static_sizes = array<i64: -9223372036854775808, 4>, static_strides = array<i64: -9223372036854775808, 1>}> : (memref<?x4xf32>, index, index, index) -> memref<?x4xf32, strided<[?, 1], offset: ?>>
87+
// CHECK-NEXT: memref.subview %{{.*}}[%{{.*}}, 0] [%{{.*}}, 4] [%{{.*}}, 1] : memref<?x4xf32> to memref<?x4xf32, strided<[?, 1], offset: ?>>
8888
// CHECK-NEXT: ^ subview runs out-of-bounds along dimension 0
8989
// CHECK-NEXT: Location: loc({{.*}})
9090
func.call @subview_dynamic(%alloca_4_dyn, %0, %5, %1) : (memref<?x4xf32>, index, index, index) -> ()
9191

9292
// Slice runs out-of-bounds due to stride
9393
// CHECK: ERROR: Runtime op verification failed
94-
// CHECK-NEXT: "memref.subview"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) <{operandSegmentSizes = array<i32: 1, 1, 1, 1>, static_offsets = array<i64: -9223372036854775808, 0>, static_sizes = array<i64: -9223372036854775808, 4>, static_strides = array<i64: -9223372036854775808, 1>}> : (memref<?x4xf32>, index, index, index) -> memref<?x4xf32, strided<[?, 1], offset: ?>>
94+
// CHECK-NEXT: memref.subview %{{.*}}[%{{.*}}, 0] [%{{.*}}, 4] [%{{.*}}, 1] : memref<?x4xf32> to memref<?x4xf32, strided<[?, 1], offset: ?>>
9595
// CHECK-NEXT: ^ subview runs out-of-bounds along dimension 0
9696
// CHECK-NEXT: Location: loc({{.*}})
9797
func.call @subview_dynamic(%alloca_4_dyn, %0, %4, %4) : (memref<?x4xf32>, index, index, index) -> ()

0 commit comments

Comments
 (0)