class MemorySSA::SkipSelfWalker

Declaration

template <class AliasAnalysisType>
class MemorySSA::SkipSelfWalker : public MemorySSAWalker { /* full declaration omitted */ };

Declared at: llvm/lib/Analysis/MemorySSA.cpp:1050

Inherits from: MemorySSAWalker

Templates

AliasAnalysisType

Member Variables

Inherited from MemorySSAWalker:

protected MSSA

Method Overview

Inherited from MemorySSAWalker:

Methods

SkipSelfWalker<AliasAnalysisType>(
    llvm::MemorySSA* M,
    ClobberWalkerBase<AliasAnalysisType>* W)

Declared at: llvm/lib/Analysis/MemorySSA.cpp:1054

Parameters

llvm::MemorySSA* M
ClobberWalkerBase<AliasAnalysisType>* W

llvm::MemoryAccess* getClobberingMemoryAccess(
    llvm::MemoryAccess* MA,
    unsigned int& UWL)

Declared at: llvm/lib/Analysis/MemorySSA.cpp:1060

Parameters

llvm::MemoryAccess* MA
unsigned int& UWL

llvm::MemoryAccess* getClobberingMemoryAccess(
    llvm::MemoryAccess* MA,
    const llvm::MemoryLocation& Loc,
    unsigned int& UWL)

Declared at: llvm/lib/Analysis/MemorySSA.cpp:1063

Parameters

llvm::MemoryAccess* MA
const llvm::MemoryLocation& Loc
unsigned int& UWL

llvm::MemoryAccess* getClobberingMemoryAccess(
    llvm::MemoryAccess* MA)

Description

Does the same thing as getClobberingMemoryAccess(const Instruction *I), but takes a MemoryAccess instead of an Instruction.

Declared at: llvm/lib/Analysis/MemorySSA.cpp:1069

Parameters

llvm::MemoryAccess* MA

llvm::MemoryAccess* getClobberingMemoryAccess(
    llvm::MemoryAccess* MA,
    const llvm::MemoryLocation& Loc)

Description

Given a potentially clobbering memory access and a new location, calling this will give you the nearest dominating clobbering MemoryAccess (by skipping non-aliasing def links). This version of the function is mainly used to disambiguate phi translated pointers, where the value of a pointer may have changed from the initial memory access. Note that this expects to be handed either a MemoryUse, or an already potentially clobbering access. Unlike the above API, if given a MemoryDef that clobbers the pointer as the starting access, it will return that MemoryDef, whereas the above would return the clobber starting from the use side of the memory def.

Declared at: llvm/lib/Analysis/MemorySSA.cpp:1073

Parameters

llvm::MemoryAccess* MA
const llvm::MemoryLocation& Loc

void invalidateInfo(llvm::MemoryAccess* MA)

Description

Given a memory access, invalidate anything this walker knows about that access. This API is used by walkers that store information to perform basic cache invalidation. This will be called by MemorySSA at appropriate times for the walker it uses or returns.

Declared at: llvm/lib/Analysis/MemorySSA.cpp:1079

Parameters

llvm::MemoryAccess* MA

~SkipSelfWalker<AliasAnalysisType>()

Declared at: llvm/lib/Analysis/MemorySSA.cpp:1056