[all-commits] [llvm/llvm-project] 210958: [MLIR] Don't sort operand of commutative ops when ...

tomnatan30 via All-commits all-commits at lists.llvm.org
Fri Jul 14 16:12:19 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 2109587cee341329c49fa999725ce6a486621b37
  Author: tomnatan <tomnatan at google.com>
  Date:   2023-07-14 (Fri, 14 Jul 2023)

  Changed paths:
    M flang/test/Fir/commute.fir
    M mlir/lib/IR/OperationSupport.cpp
    M mlir/test/Dialect/Func/duplicate-function-elimination.mlir
    M mlir/test/Transforms/cse.mlir

  Log Message:
  [MLIR] Don't sort operand of commutative ops when comparing two ops as there is a correctness issue

This feature was introduced in `D123492`.

Doing equivalence on pointers to sort operands of commutative operations is incorrect when checking equivalence of ops in separate regions (where the lhs and rhs operands are marked as equivalent but are not the same value).

It was also discussed in `D123492` and `D129480` that the correct solution would be to stable sort the operands in canonicalization (based on some numbering in the region maybe), but until that lands, reverting this change will unblock us and other users.

An example of a pass that might not work properly because of this is `DuplicateFunctionEliminationPass`.

Reviewed By: mehdi_amini, jpienaar

Differential Revision: https://reviews.llvm.org/D154699

More information about the All-commits mailing list