Skip to content

Commit 3c53745

Browse files
authored
[mlir][EmitC] Do not convert illegal types in EmitC (#104571)
This patch adds check for unsupported types in emitc, which fixes a crash. Fix #103706.
1 parent f1b6427 commit 3c53745

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitCPass.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ struct ConvertMemRefToEmitCPass
3333

3434
// Fallback for other types.
3535
converter.addConversion([](Type type) -> std::optional<Type> {
36-
if (isa<MemRefType>(type))
37-
return {};
38-
return type;
36+
if (emitc::isSupportedEmitCType(type))
37+
return type;
38+
return {};
3939
});
4040

4141
populateMemRefToEmitCTypeConversion(converter);

mlir/test/Conversion/MemRefToEmitC/memref-to-emitc-failed.mlir

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,19 @@ func.func @zero_rank() {
4343

4444
// expected-error@+1 {{failed to legalize operation 'memref.global'}}
4545
memref.global "nested" constant @nested_global : memref<3x7xf32>
46+
47+
// -----
48+
49+
func.func @unsupported_type_f16() {
50+
// expected-error@+1 {{failed to legalize operation 'memref.alloca'}}
51+
%0 = memref.alloca() : memref<4xf16>
52+
return
53+
}
54+
55+
// -----
56+
57+
func.func @unsupported_type_i4() {
58+
// expected-error@+1 {{failed to legalize operation 'memref.alloca'}}
59+
%0 = memref.alloca() : memref<4xi4>
60+
return
61+
}

0 commit comments

Comments
 (0)