MLIR
20.0.0git
|
#include "mlir/Analysis/AliasAnalysis/LocalAliasAnalysis.h"
#include "mlir/Analysis/AliasAnalysis.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/Block.h"
#include "mlir/IR/Matchers.h"
#include "mlir/IR/OpDefinition.h"
#include "mlir/IR/Operation.h"
#include "mlir/IR/Region.h"
#include "mlir/IR/Value.h"
#include "mlir/IR/ValueRange.h"
#include "mlir/Interfaces/ControlFlowInterfaces.h"
#include "mlir/Interfaces/FunctionInterfaces.h"
#include "mlir/Interfaces/SideEffectInterfaces.h"
#include "mlir/Interfaces/ViewLikeInterface.h"
#include "mlir/Support/LLVM.h"
#include "llvm/Support/Casting.h"
#include <cassert>
#include <optional>
#include <utility>
Go to the source code of this file.
Functions | |
static void | collectUnderlyingAddressValues (Value value, unsigned maxDepth, DenseSet< Value > &visited, SmallVectorImpl< Value > &output) |
Given a value, collect all of the underlying values being addressed. More... | |
static void | collectUnderlyingAddressValues (RegionBranchOpInterface branch, Region *region, Value inputValue, unsigned inputIndex, unsigned maxDepth, DenseSet< Value > &visited, SmallVectorImpl< Value > &output) |
Given a successor (region ) of a RegionBranchOpInterface, collect all of the underlying values being addressed by one of the successor inputs. More... | |
static void | collectUnderlyingAddressValues (OpResult result, unsigned maxDepth, DenseSet< Value > &visited, SmallVectorImpl< Value > &output) |
Given a result, collect all of the underlying values being addressed. More... | |
static void | collectUnderlyingAddressValues (BlockArgument arg, unsigned maxDepth, DenseSet< Value > &visited, SmallVectorImpl< Value > &output) |
Given a block argument, collect all of the underlying values being addressed. More... | |
static void | collectUnderlyingAddressValues (Value value, SmallVectorImpl< Value > &output) |
Given a value, collect all of the underlying values being addressed. More... | |
static LogicalResult | getAllocEffectFor (Value value, std::optional< MemoryEffects::EffectInstance > &effect, Operation *&allocScopeOp) |
Given a value, try to get an allocation effect attached to it. More... | |
Variables | |
static constexpr unsigned | maxUnderlyingValueSearchDepth = 10 |
The maximum depth that will be searched when trying to find an underlying value. More... | |
|
static |
Given a block argument, collect all of the underlying values being addressed.
Definition at line 145 of file LocalAliasAnalysis.cpp.
References collectUnderlyingAddressValues(), mlir::BlockArgument::getArgNumber(), mlir::BlockArgument::getOwner(), mlir::Block::getParent(), mlir::Region::getParentOp(), mlir::Block::isEntryBlock(), mlir::Block::pred_begin(), and mlir::Block::pred_end().
|
static |
Given a result, collect all of the underlying values being addressed.
Definition at line 124 of file LocalAliasAnalysis.cpp.
References collectUnderlyingAddressValues(), mlir::OpResult::getOwner(), and mlir::OpResult::getResultNumber().
|
static |
Given a successor (region
) of a RegionBranchOpInterface, collect all of the underlying values being addressed by one of the successor inputs.
If the provided region
is null, as per RegionBranchOpInterface
this represents the parent operation.
Definition at line 49 of file LocalAliasAnalysis.cpp.
References collectUnderlyingAddressValues(), mlir::Operation::getRegions(), and mlir::RegionBranchPoint::parent().
|
static |
Given a value, collect all of the underlying values being addressed.
Definition at line 206 of file LocalAliasAnalysis.cpp.
References collectUnderlyingAddressValues(), and maxUnderlyingValueSearchDepth.
|
static |
Given a value, collect all of the underlying values being addressed.
Definition at line 187 of file LocalAliasAnalysis.cpp.
Referenced by mlir::LocalAliasAnalysis::alias(), and collectUnderlyingAddressValues().
|
static |
Given a value, try to get an allocation effect attached to it.
If successful, allocEffect
is populated with the effect. If an effect was found, allocScopeOp
is also specified if a parent operation of value
could be identified that bounds the scope of the allocated value; i.e. if non-null it specifies the parent operation that the allocation does not escape. If no scope is found, allocScopeOp
is set to nullptr.
Definition at line 224 of file LocalAliasAnalysis.cpp.
References mlir::Operation::getParentOfType(), mlir::Operation::getParentOp(), and mlir::Operation::getParentWithTrait().
Referenced by mlir::LocalAliasAnalysis::aliasImpl().
|
staticconstexpr |
The maximum depth that will be searched when trying to find an underlying value.
Definition at line 38 of file LocalAliasAnalysis.cpp.
Referenced by collectUnderlyingAddressValues().