MLIR 23.0.0git
MemorySlotInterfaces.cpp File Reference
#include "mlir/Interfaces/MemorySlotInterfaces.h"
#include "llvm/ADT/SmallVector.h"
#include "mlir/Interfaces/MemorySlotOpInterfaces.cpp.inc"
#include "mlir/Interfaces/MemorySlotTypeInterfaces.cpp.inc"

Go to the source code of this file.

Functions

static std::optional< MemorySlotgetParentSlot (Value aliasPtr, const MemorySlot &rootSlot, const PromotableAliasMap &aliasMap)
 Returns the slot describing aliasPtr: rootSlot if it is the root, the entry in aliasMap if it's a known alias, or nullopt otherwise.
static std::optional< SmallVector< ChainStep > > buildAliasChain (const MemorySlot &aliasSlot, const MemorySlot &rootSlot, const PromotableAliasMap &aliasMap)
 Walks from aliasSlot back to rootSlot via aliasMap.

Function Documentation

◆ buildAliasChain()

std::optional< SmallVector< ChainStep > > buildAliasChain ( const MemorySlot & aliasSlot,
const MemorySlot & rootSlot,
const PromotableAliasMap & aliasMap )
static

Walks from aliasSlot back to rootSlot via aliasMap.

Returns the leaf-to-root chain, or nullopt if aliasSlot is not a known alias.

Definition at line 85 of file MemorySlotInterfaces.cpp.

References mlir::IROperand< DerivedT, IRValueT >::get(), mlir::detail::IROperandBase::getOwner(), getParentSlot(), and mlir::MemorySlot::ptr.

Referenced by mlir::convertAliasValueToSlotValue(), and mlir::convertSlotValueToAliasValue().

◆ getParentSlot()

std::optional< MemorySlot > getParentSlot ( Value aliasPtr,
const MemorySlot & rootSlot,
const PromotableAliasMap & aliasMap )
static

Returns the slot describing aliasPtr: rootSlot if it is the root, the entry in aliasMap if it's a known alias, or nullopt otherwise.

Definition at line 21 of file MemorySlotInterfaces.cpp.

References mlir::MemorySlot::ptr.

Referenced by buildAliasChain(), mlir::getOpAliasSlot(), mlir::populatePromotableAliasMap(), and mlir::referencesAtMostOneAliasOfSlot().