return getMemoryEffects(F).onlyReadsMemory();
}
- /// getModRefInfo (for call sites) - Return information about whether
- /// a particular call site modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc);
-
- /// getModRefInfo (for call sites) - A convenience wrapper.
- ModRefInfo getModRefInfo(const CallBase *Call, const Value *P,
- LocationSize Size) {
- return getModRefInfo(Call, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for loads) - Return information about whether
- /// a particular load modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const LoadInst *L, const MemoryLocation &Loc);
-
- /// getModRefInfo (for loads) - A convenience wrapper.
- ModRefInfo getModRefInfo(const LoadInst *L, const Value *P,
- LocationSize Size) {
- return getModRefInfo(L, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for stores) - Return information about whether
- /// a particular store modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const StoreInst *S, const MemoryLocation &Loc);
-
- /// getModRefInfo (for stores) - A convenience wrapper.
- ModRefInfo getModRefInfo(const StoreInst *S, const Value *P,
- LocationSize Size) {
- return getModRefInfo(S, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for fences) - Return information about whether
- /// a particular store modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const FenceInst *S, const MemoryLocation &Loc);
-
- /// getModRefInfo (for fences) - A convenience wrapper.
- ModRefInfo getModRefInfo(const FenceInst *S, const Value *P,
- LocationSize Size) {
- return getModRefInfo(S, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for cmpxchges) - Return information about whether
- /// a particular cmpxchg modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const AtomicCmpXchgInst *CX,
- const MemoryLocation &Loc);
-
- /// getModRefInfo (for cmpxchges) - A convenience wrapper.
- ModRefInfo getModRefInfo(const AtomicCmpXchgInst *CX, const Value *P,
- LocationSize Size) {
- return getModRefInfo(CX, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for atomicrmws) - Return information about whether
- /// a particular atomicrmw modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const AtomicRMWInst *RMW, const MemoryLocation &Loc);
-
- /// getModRefInfo (for atomicrmws) - A convenience wrapper.
- ModRefInfo getModRefInfo(const AtomicRMWInst *RMW, const Value *P,
- LocationSize Size) {
- return getModRefInfo(RMW, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for va_args) - Return information about whether
- /// a particular va_arg modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const VAArgInst *I, const MemoryLocation &Loc);
-
- /// getModRefInfo (for va_args) - A convenience wrapper.
- ModRefInfo getModRefInfo(const VAArgInst *I, const Value *P,
- LocationSize Size) {
- return getModRefInfo(I, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for catchpads) - Return information about whether
- /// a particular catchpad modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const CatchPadInst *I, const MemoryLocation &Loc);
-
- /// getModRefInfo (for catchpads) - A convenience wrapper.
- ModRefInfo getModRefInfo(const CatchPadInst *I, const Value *P,
- LocationSize Size) {
- return getModRefInfo(I, MemoryLocation(P, Size));
- }
-
- /// getModRefInfo (for catchrets) - Return information about whether
- /// a particular catchret modifies or reads the specified memory location.
- ModRefInfo getModRefInfo(const CatchReturnInst *I, const MemoryLocation &Loc);
-
- /// getModRefInfo (for catchrets) - A convenience wrapper.
- ModRefInfo getModRefInfo(const CatchReturnInst *I, const Value *P,
- LocationSize Size) {
- return getModRefInfo(I, MemoryLocation(P, Size));
- }
-
/// Check whether or not an instruction may read or write the optionally
/// specified memory location.
///
/// the same memory locations.
ModRefInfo getModRefInfo(const Instruction *I, const CallBase *Call);
- /// Return information about whether two call sites may refer to the same set
- /// of memory locations. See the AA documentation for details:
- /// http://llvm.org/docs/AliasAnalysis.html#ModRefInfo
- ModRefInfo getModRefInfo(const CallBase *Call1, const CallBase *Call2);
-
/// Return information about whether a particular call site modifies
/// or reads the specified memory location \p MemLoc before instruction \p I
/// in a BasicBlock.
bool IgnoreLocals = false) {
return AA.getModRefInfoMask(Loc, AAQI, IgnoreLocals);
}
- ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc) {
- return AA.getModRefInfo(Call, Loc, AAQI);
- }
- ModRefInfo getModRefInfo(const CallBase *Call1, const CallBase *Call2) {
- return AA.getModRefInfo(Call1, Call2, AAQI);
- }
ModRefInfo getModRefInfo(const Instruction *I,
const Optional<MemoryLocation> &OptLoc) {
return AA.getModRefInfo(I, OptLoc, AAQI);
}
ModRefInfo AAResults::getModRefInfo(const CallBase *Call,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(Call, Loc, AAQIP);
-}
-
-ModRefInfo AAResults::getModRefInfo(const CallBase *Call,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
ModRefInfo Result = ModRefInfo::ModRef;
}
ModRefInfo AAResults::getModRefInfo(const CallBase *Call1,
- const CallBase *Call2) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(Call1, Call2, AAQIP);
-}
-
-ModRefInfo AAResults::getModRefInfo(const CallBase *Call1,
const CallBase *Call2, AAQueryInfo &AAQI) {
ModRefInfo Result = ModRefInfo::ModRef;
//===----------------------------------------------------------------------===//
ModRefInfo AAResults::getModRefInfo(const LoadInst *L,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(L, Loc, AAQIP);
-}
-ModRefInfo AAResults::getModRefInfo(const LoadInst *L,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
// Be conservative in the face of atomic.
}
ModRefInfo AAResults::getModRefInfo(const StoreInst *S,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(S, Loc, AAQIP);
-}
-ModRefInfo AAResults::getModRefInfo(const StoreInst *S,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
// Be conservative in the face of atomic.
}
ModRefInfo AAResults::getModRefInfo(const FenceInst *S,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(S, Loc, AAQIP);
-}
-
-ModRefInfo AAResults::getModRefInfo(const FenceInst *S,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
// All we know about a fence instruction is what we get from the ModRef
}
ModRefInfo AAResults::getModRefInfo(const VAArgInst *V,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(V, Loc, AAQIP);
-}
-
-ModRefInfo AAResults::getModRefInfo(const VAArgInst *V,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
if (Loc.Ptr) {
}
ModRefInfo AAResults::getModRefInfo(const CatchPadInst *CatchPad,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(CatchPad, Loc, AAQIP);
-}
-
-ModRefInfo AAResults::getModRefInfo(const CatchPadInst *CatchPad,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
if (Loc.Ptr) {
}
ModRefInfo AAResults::getModRefInfo(const CatchReturnInst *CatchRet,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(CatchRet, Loc, AAQIP);
-}
-
-ModRefInfo AAResults::getModRefInfo(const CatchReturnInst *CatchRet,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
if (Loc.Ptr) {
}
ModRefInfo AAResults::getModRefInfo(const AtomicCmpXchgInst *CX,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(CX, Loc, AAQIP);
-}
-
-ModRefInfo AAResults::getModRefInfo(const AtomicCmpXchgInst *CX,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
// Acquire/Release cmpxchg has properties that matter for arbitrary addresses.
}
ModRefInfo AAResults::getModRefInfo(const AtomicRMWInst *RMW,
- const MemoryLocation &Loc) {
- SimpleAAQueryInfo AAQIP(*this);
- return getModRefInfo(RMW, Loc, AAQIP);
-}
-
-ModRefInfo AAResults::getModRefInfo(const AtomicRMWInst *RMW,
const MemoryLocation &Loc,
AAQueryInfo &AAQI) {
// Acquire/Release atomicrmw has properties that matter for arbitrary addresses.