MLIR  19.0.0git
Functions | Variables
LocalAliasAnalysis.cpp File Reference
#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 "mlir/Support/LogicalResult.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...
 

Function Documentation

◆ collectUnderlyingAddressValues() [1/5]

static void collectUnderlyingAddressValues ( BlockArgument  arg,
unsigned  maxDepth,
DenseSet< Value > &  visited,
SmallVectorImpl< Value > &  output 
)
static

◆ collectUnderlyingAddressValues() [2/5]

static void collectUnderlyingAddressValues ( OpResult  result,
unsigned  maxDepth,
DenseSet< Value > &  visited,
SmallVectorImpl< Value > &  output 
)
static

Given a result, collect all of the underlying values being addressed.

Definition at line 125 of file LocalAliasAnalysis.cpp.

◆ collectUnderlyingAddressValues() [3/5]

static void collectUnderlyingAddressValues ( RegionBranchOpInterface  branch,
Region region,
Value  inputValue,
unsigned  inputIndex,
unsigned  maxDepth,
DenseSet< Value > &  visited,
SmallVectorImpl< Value > &  output 
)
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 50 of file LocalAliasAnalysis.cpp.

References collectUnderlyingAddressValues(), and mlir::RegionBranchPoint::parent().

◆ collectUnderlyingAddressValues() [4/5]

static void collectUnderlyingAddressValues ( Value  value,
SmallVectorImpl< Value > &  output 
)
static

Given a value, collect all of the underlying values being addressed.

Definition at line 207 of file LocalAliasAnalysis.cpp.

References collectUnderlyingAddressValues(), and maxUnderlyingValueSearchDepth.

◆ collectUnderlyingAddressValues() [5/5]

static void collectUnderlyingAddressValues ( Value  value,
unsigned  maxDepth,
DenseSet< Value > &  visited,
SmallVectorImpl< Value > &  output 
)
static

Given a value, collect all of the underlying values being addressed.

Definition at line 188 of file LocalAliasAnalysis.cpp.

Referenced by mlir::LocalAliasAnalysis::alias(), and collectUnderlyingAddressValues().

◆ getAllocEffectFor()

static LogicalResult getAllocEffectFor ( Value  value,
std::optional< MemoryEffects::EffectInstance > &  effect,
Operation *&  allocScopeOp 
)
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 225 of file LocalAliasAnalysis.cpp.

Referenced by mlir::LocalAliasAnalysis::aliasImpl().

Variable Documentation

◆ maxUnderlyingValueSearchDepth

constexpr unsigned maxUnderlyingValueSearchDepth = 10
staticconstexpr

The maximum depth that will be searched when trying to find an underlying value.

Definition at line 39 of file LocalAliasAnalysis.cpp.

Referenced by collectUnderlyingAddressValues().