Skip to content

Commit ac5c5c1

Browse files
committed
[mlir][EmitC] Do not convert illegal types in EmitC
This patch adds check for unsupported types in emitc, which fixes a crash.
1 parent 9088ac1 commit ac5c5c1

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ void mlir::populateMemRefToEmitCTypeConversion(TypeConverter &typeConverter) {
177177
}
178178
Type convertedElementType =
179179
typeConverter.convertType(memRefType.getElementType());
180-
if (!convertedElementType)
180+
if (!convertedElementType ||
181+
!emitc::isSupportedEmitCType(convertedElementType))
181182
return {};
182183
return emitc::ArrayType::get(memRefType.getShape(),
183184
convertedElementType);

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)