File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed 
lib/Conversion/MemRefToEmitC 
test/Conversion/MemRefToEmitC Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -167,7 +167,9 @@ void mlir::populateMemRefToEmitCTypeConversion(TypeConverter &typeConverter) {
167167  typeConverter.addConversion (
168168      [&](MemRefType memRefType) -> std::optional<Type> {
169169        if  (!memRefType.hasStaticShape () ||
170-             !memRefType.getLayout ().isIdentity () || memRefType.getRank () == 0 ) {
170+             !memRefType.getLayout ().isIdentity () || memRefType.getRank () == 0  ||
171+             llvm::any_of (memRefType.getShape (),
172+                          [](int64_t  dim) { return  dim == 0 ; })) {
171173          return  {};
172174        }
173175        Type convertedElementType =
Original file line number Diff line number Diff line change @@ -41,6 +41,22 @@ func.func @zero_rank() {
4141
4242// ----- 
4343
44+ func.func  @zero_dim_rank_1 () {
45+   // expected-error@+1 {{failed to legalize operation 'memref.alloca'}} 
46+   %0  = memref.alloca () : memref <0 xf32 >
47+   return 
48+ }
49+ 
50+ // ----- 
51+ 
52+ func.func  @zero_dim_rank_3 () {
53+   // expected-error@+1 {{failed to legalize operation 'memref.alloca'}} 
54+   %0  = memref.alloca () : memref <2 x0 x4 xf32 >
55+   return 
56+ }
57+ 
58+ // ----- 
59+ 
4460// expected-error@+1 {{failed to legalize operation 'memref.global'}} 
4561memref.global  " nested"   constant  @nested_global  : memref <3 x7 xf32 >
4662
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments