llvm::MemorySSA

Encapsulates MemorySSA, including all data associated with memory accesses.

Synopsis

Declared in <llvm/Analysis/MemorySSA.h>

class MemorySSA;

Type Aliases

Name
AccessList
DefsList

Enums

NameDescription
InsertionPlace Used in various insertion functions to specify whether we are talking about the beginning or end of a block.
VerificationLevel

Member Functions

NameDescription
MemorySSA [constructor]Constructors
~MemorySSA [destructor]Destructor
dominates dominates overloads
dump
ensureOptimizedUses By default, uses are not optimized during MemorySSA construction. Calling this method will attempt to optimize all MemoryUses, if this has not happened yet for this MemorySSA instance. This should be done if you plan to query the clobbering access for most uses, or if you walk the def-use chain of uses.
getAA
getBlockAccesses Return the list of MemoryAccess's for a given basic block.
getBlockDefs Return the list of MemoryDef's and MemoryPhi's for a given basic block.
getDomTree
getLiveOnEntryDef
getMemoryAccess Given a memory Mod/Ref'ing instruction, get the MemorySSA access associated with it. If passed a basic block gets the memory phi node that exists for that block, if there is one. Otherwise, this will get a MemoryUseOrDef.
getSkipSelfWalker
getWalker
isLiveOnEntryDef Return true if MA represents the live on entry value
locallyDominates Given two memory accesses in the same basic block, determine whether MemoryAccess A dominates MemoryAccess B.
print
verifyMemorySSA Verify that MemorySSA is self consistent (IE definitions dominate all uses, uses appear in the right places). This is used by unit tests.

Protected Member Functions

Name
createDefinedAccess
insertIntoListsBefore
insertIntoListsForBlock
moveTo
removeFromLists
removeFromLookups
renamePass
verifyDominationNumbers
verifyOrderingDominationAndDefUses
verifyPrevDefInPhis

Friends

NameDescription
llvm::MemorySSAUpdater