Skip to content

[MLIR][Memref] Code block emptied After --canonicalize Pass #114300

Open
@tavakkoliamirmohammad

Description

@tavakkoliamirmohammad

Hi, I’m facing an issue with the following code. After applying the —canonicalize option, the main function body becomes empty, eliminating all its operations.

You can view the code and reproduction steps in Compiler Explorer: https://godbolt.org/z/s5oKx48Kq

module {
  func.func @main() {
    %c8_i32 = arith.constant 8 : i32
    %c1_i32 = arith.constant 1 : i32
    %0 = arith.muli %c1_i32, %c8_i32 : i32
    %alloc = memref.alloc() : memref<64xf32>
    %alloc_0 = memref.alloc() : memref<64xf32>
    affine.for %arg0 = 0 to 64 {
      %1 = arith.index_cast %arg0 : index to i32
      %2 = arith.divui %1, %c1_i32 : i32
      %3 = arith.divui %2, %0 : i32
      %4 = arith.remui %2, %0 : i32
      %5 = arith.divui %4, %c1_i32 : i32
      %c0_i32 = arith.constant 0 : i32
      %6 = arith.muli %c1_i32, %3 : i32
      %7 = arith.muli %c1_i32, %5 : i32
      %8 = arith.addi %c0_i32, %6 : i32
      %9 = arith.addi %c0_i32, %7 : i32
      %10 = arith.muli %8, %0 : i32
      %11 = arith.addi %c0_i32, %10 : i32
      %12 = arith.muli %9, %c1_i32 : i32
      %13 = arith.addi %11, %12 : i32
      %14 = arith.muli %13, %c1_i32 : i32
      %15 = arith.addi %c0_i32, %14 : i32
      %16 = arith.index_cast %15 : i32 to index
      %17 = memref.load %alloc_0[%16] : memref<64xf32>
      %18 = arith.muli %9, %0 : i32
      %19 = arith.addi %c0_i32, %18 : i32
      %20 = arith.muli %8, %c1_i32 : i32
      %21 = arith.addi %19, %20 : i32
      %22 = arith.muli %21, %c1_i32 : i32
      %23 = arith.addi %c0_i32, %22 : i32
      %24 = arith.index_cast %23 : i32 to index
      memref.store %17, %alloc[%24] : memref<64xf32>
    }
    memref.dealloc %alloc : memref<64xf32>
    memref.dealloc %alloc_0 : memref<64xf32>
    return
  }
}

Calling the --canonicalize

module {
  func.func @main() {
    return
  }
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions