| // RUN: mlir-opt %s --convert-to-llvm --split-input-file --verify-diagnostics | FileCheck %s |
| |
| // Test that extremely high-rank memrefs with overflow in stride calculation |
| // are handled gracefully instead of crashing (issue #177816). |
| |
| // CHECK-LABEL: func @high_rank_memref_overflow |
| func.func @high_rank_memref_overflow() { |
| // This creates a memref with 64 dimensions of size 2, resulting in 2^64 elements |
| // which overflows int64_t. The stride calculation should handle this gracefully. |
| %0 = memref.alloc() : memref<2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2xi32> |
| return |
| } |
| |
| // ----- |
| |
| // CHECK-LABEL: func @high_rank_memref_max_dim |
| func.func @high_rank_memref_max_dim() { |
| // Test with fewer dimensions but larger sizes that also cause overflow |
| %0 = memref.alloc() : memref<9223372036854775807x2xi32> |
| return |
| } |