[mlir] Add support for merging identical blocks during canonicalization
authorRiver Riddle <riddleriver@gmail.com>
Tue, 5 May 2020 02:54:36 +0000 (19:54 -0700)
committerRiver Riddle <riddleriver@gmail.com>
Tue, 5 May 2020 02:56:46 +0000 (19:56 -0700)
commit469c02d0581a4bd7539c7dd62063c29072b55852
treecdeb3d49eaf9737a23c54732bc8420b9940da976
parent13090ec7dd4cbd54d42fe6f9f7ce7ab88c7c3c6d
[mlir] Add support for merging identical blocks during canonicalization

This revision adds support for merging identical blocks, or those with the same operations that branch to the same successors. Operands that mismatch between the different blocks are replaced with new block arguments added to the merged block.

Differential Revision: https://reviews.llvm.org/D79134
12 files changed:
llvm/include/llvm/ADT/STLExtras.h
mlir/include/mlir/IR/BlockSupport.h
mlir/include/mlir/IR/Operation.h
mlir/include/mlir/IR/OperationSupport.h
mlir/include/mlir/IR/Value.h
mlir/lib/IR/OperationSupport.cpp
mlir/lib/IR/Value.cpp
mlir/lib/Transforms/Utils/RegionUtils.cpp
mlir/test/Dialect/SPIRV/canonicalize.mlir
mlir/test/Transforms/canonicalize-block-merge.mlir [new file with mode: 0644]
mlir/test/Transforms/canonicalize-dce.mlir
mlir/test/Transforms/canonicalize.mlir