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


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


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.

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.