[mlir] Add initial support for an alias analysis framework in MLIR
authorRiver Riddle <riddleriver@gmail.com>
Tue, 9 Feb 2021 22:11:00 +0000 (14:11 -0800)
committerRiver Riddle <riddleriver@gmail.com>
Tue, 9 Feb 2021 22:21:27 +0000 (14:21 -0800)
commitb9c876bd7e9aeb5ea629b60fc65805b67e6f89a2
tree2f03f6f6b3dbf8f446b5719560819344fe5e90f8
parent8b4a7272810178a91f128f32b9f8ccb97bcf11b9
[mlir] Add initial support for an alias analysis framework in MLIR

This revision adds a new `AliasAnalysis` class that represents the main alias analysis interface in MLIR. The purpose of this class is not to hold the aliasing logic itself, but to provide an interface into various different alias analysis implementations. As it evolves this should allow for users to plug in specialized alias analysis implementations for their own needs, and have them immediately usable by other analyses and transformations.

This revision also adds an initial simple generic alias, LocalAliasAnalysis, that provides support for performing stateless local alias queries between values. This class is similar in scope to LLVM's BasicAA.

Differential Revision: https://reviews.llvm.org/D92343
13 files changed:
mlir/include/mlir/Analysis/AliasAnalysis.h [new file with mode: 0644]
mlir/include/mlir/Analysis/AliasAnalysis/LocalAliasAnalysis.h [new file with mode: 0644]
mlir/include/mlir/IR/OpDefinition.h
mlir/include/mlir/Interfaces/SideEffectInterfaceBase.td
mlir/lib/Analysis/AliasAnalysis.cpp [new file with mode: 0644]
mlir/lib/Analysis/AliasAnalysis/LocalAliasAnalysis.cpp [new file with mode: 0644]
mlir/lib/Analysis/CMakeLists.txt
mlir/test/Analysis/test-alias-analysis.mlir [new file with mode: 0644]
mlir/test/lib/Analysis/CMakeLists.txt [new file with mode: 0644]
mlir/test/lib/Analysis/TestAliasAnalysis.cpp [new file with mode: 0644]
mlir/test/lib/CMakeLists.txt
mlir/tools/mlir-opt/CMakeLists.txt
mlir/tools/mlir-opt/mlir-opt.cpp