llvm-project/mlir/lib/Analysis
Markus Böck 0c789db541 [mlir] Add support for operation-produced successor arguments in BranchOpInterface
This patch revamps the BranchOpInterface a bit and allows a proper implementation of what was previously `getMutableSuccessorOperands` for operations, which internally produce arguments to some of the block arguments. A motivating example for this would be an invoke op with a error handling path:
```
invoke %function(%0)
  label ^success ^error(%1 : i32)

^error(%e: !error, %arg0 : i32):
  ...
```
The advantages of this are that any users of `BranchOpInterface` can still argue over remaining block argument operands (such as `%1` in the example above), as well as make use of the modifying capabilities to add more operands, erase an operand etc.

The way this patch implements that functionality is via a new class called `SuccessorOperands`, which is now returned by `getSuccessorOperands`. It basically contains an `unsigned` denoting how many operator produced operands exist, as well as a `MutableOperandRange`, which are the usual forwarded operands we are used to. The produced operands are assumed to the first few block arguments, followed by the forwarded operands afterwards. The role of `SuccessorOperands` is to provide various utility functions to modify and query the successor arguments from a `BranchOpInterface`.

Differential Revision: https://reviews.llvm.org/D123062
2022-04-08 08:28:16 +02:00
..
AliasAnalysis [mlir] Add support for operation-produced successor arguments in BranchOpInterface 2022-04-08 08:28:16 +02:00
Presburger NFC: Silence unused function 'scaleAndAdd' in release build. 2022-04-07 21:19:19 -07:00
AliasAnalysis.cpp [mlir] Add support for querying the ModRef behavior from the AliasAnalysis class 2021-05-27 13:57:29 -07:00
BufferViewFlowAnalysis.cpp [mlir] Add support for operation-produced successor arguments in BranchOpInterface 2022-04-08 08:28:16 +02:00
CMakeLists.txt [mlir:Analysis] Move the LoopAnalysis library to Dialect/Affine/Analysis 2022-01-18 10:28:22 -08:00
CallGraph.cpp [mlir] Update SCCP and the Inliner to use SymbolTableCollection for symbol lookups 2020-10-16 12:08:48 -07:00
DataFlowAnalysis.cpp [mlir] Add support for operation-produced successor arguments in BranchOpInterface 2022-04-08 08:28:16 +02:00
DataLayoutAnalysis.cpp [mlir] support memref of memref in standard-to-llvm conversion 2021-06-08 11:11:31 +02:00
Liveness.cpp Apply clang-tidy fixes for modernize-use-equals-default to MLIR (NFC) 2022-01-02 22:18:36 +00:00
SliceAnalysis.cpp [mlir:Analysis] Move the LoopAnalysis library to Dialect/Affine/Analysis 2022-01-18 10:28:22 -08:00