LLVM 19.0.0git
Classes | Functions
llvm::GISelAddressing Namespace Reference

Classes

struct  BaseIndexOffset
 Helper struct to store a base, index and offset that forms an address. More...
 

Functions

BaseIndexOffset getPointerInfo (Register Ptr, MachineRegisterInfo &MRI)
 Returns a BaseIndexOffset which describes the pointer in Ptr.
 
bool aliasIsKnownForLoadStore (const MachineInstr &MI1, const MachineInstr &MI2, bool &IsAlias, MachineRegisterInfo &MRI)
 Compute whether or not a memory access at MI1 aliases with an access at MI2.
 
bool instMayAlias (const MachineInstr &MI, const MachineInstr &Other, MachineRegisterInfo &MRI, AliasAnalysis *AA)
 Returns true if the instruction MI may alias Other.
 

Function Documentation

◆ aliasIsKnownForLoadStore()

bool llvm::GISelAddressing::aliasIsKnownForLoadStore ( const MachineInstr MI1,
const MachineInstr MI2,
bool IsAlias,
MachineRegisterInfo MRI 
)

Compute whether or not a memory access at MI1 aliases with an access at MI2.

Returns
true if either alias/no-alias is known. Sets IsAlias accordingly.

Definition at line 105 of file LoadStoreOpt.cpp.

References llvm::GISelAddressing::BaseIndexOffset::BaseReg, llvm::getDefIgnoringCopies(), getPointerInfo(), llvm::LocationSize::getValue(), llvm::LocationSize::hasValue(), llvm::MachineFrameInfo::isFixedObjectIndex(), llvm::LocationSize::isScalable(), llvm::Register::isValid(), MRI, and llvm::GISelAddressing::BaseIndexOffset::Offset.

Referenced by instMayAlias().

◆ getPointerInfo()

BaseIndexOffset llvm::GISelAddressing::getPointerInfo ( Register  Ptr,
MachineRegisterInfo MRI 
)

◆ instMayAlias()

bool llvm::GISelAddressing::instMayAlias ( const MachineInstr MI,
const MachineInstr Other,
MachineRegisterInfo MRI,
AliasAnalysis AA 
)

Returns true if the instruction MI may alias Other.

This function uses multiple strategies to detect aliasing, whereas aliasIsKnownForLoadStore just looks at the addresses of load/stores and is tries to reason about base/index/offsets.

Definition at line 188 of file LoadStoreOpt.cpp.

References aliasIsKnownForLoadStore(), llvm::LocationSize::beforeOrAfterPointer(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::LocationSize::getValue(), llvm::LocationSize::hasValue(), llvm::AAResults::isNoAlias(), llvm::LocationSize::isScalable(), llvm::MIPatternMatch::m_GPtrAdd(), llvm::MIPatternMatch::m_ICst(), llvm::MIPatternMatch::m_Reg(), MI, llvm::MIPatternMatch::mi_match(), MRI, llvm::Offset, llvm::Other, llvm::LocationSize::precise(), and Size.