LLVM 19.0.0git
Public Member Functions | List of all members
llvm::DoNothingMemorySSAWalker Class Referencefinal

A MemorySSAWalker that does no alias queries, or anything else. More...

#include "llvm/Analysis/MemorySSA.h"

Inheritance diagram for llvm::DoNothingMemorySSAWalker:
Inheritance graph
[legend]

Public Member Functions

MemoryAccessgetClobberingMemoryAccess (MemoryAccess *, BatchAAResults &) override
 Does the same thing as getClobberingMemoryAccess(const Instruction *I), but takes a MemoryAccess instead of an Instruction.
 
MemoryAccessgetClobberingMemoryAccess (MemoryAccess *, const MemoryLocation &, BatchAAResults &) override
 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).
 
MemoryAccessgetClobberingMemoryAccess (const Instruction *I, BatchAAResults &AA)
 Given a memory Mod/Ref/ModRef'ing instruction, calling this will give you the nearest dominating MemoryAccess that Mod's the location the instruction accesses (by skipping any def which AA can prove does not alias the location(s) accessed by the instruction given).
 
virtual MemoryAccessgetClobberingMemoryAccess (MemoryAccess *, BatchAAResults &AA)=0
 Does the same thing as getClobberingMemoryAccess(const Instruction *I), but takes a MemoryAccess instead of an Instruction.
 
virtual MemoryAccessgetClobberingMemoryAccess (MemoryAccess *, const MemoryLocation &, BatchAAResults &AA)=0
 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).
 
MemoryAccessgetClobberingMemoryAccess (const Instruction *I)
 
MemoryAccessgetClobberingMemoryAccess (MemoryAccess *MA)
 
MemoryAccessgetClobberingMemoryAccess (MemoryAccess *MA, const MemoryLocation &Loc)
 
- Public Member Functions inherited from llvm::MemorySSAWalker
 MemorySSAWalker (MemorySSA *)
 
virtual ~MemorySSAWalker ()=default
 
MemoryAccessgetClobberingMemoryAccess (const Instruction *I, BatchAAResults &AA)
 Given a memory Mod/Ref/ModRef'ing instruction, calling this will give you the nearest dominating MemoryAccess that Mod's the location the instruction accesses (by skipping any def which AA can prove does not alias the location(s) accessed by the instruction given).
 
virtual MemoryAccessgetClobberingMemoryAccess (MemoryAccess *, BatchAAResults &AA)=0
 Does the same thing as getClobberingMemoryAccess(const Instruction *I), but takes a MemoryAccess instead of an Instruction.
 
virtual MemoryAccessgetClobberingMemoryAccess (MemoryAccess *, const MemoryLocation &, BatchAAResults &AA)=0
 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).
 
MemoryAccessgetClobberingMemoryAccess (const Instruction *I)
 
MemoryAccessgetClobberingMemoryAccess (MemoryAccess *MA)
 
MemoryAccessgetClobberingMemoryAccess (MemoryAccess *MA, const MemoryLocation &Loc)
 
virtual void invalidateInfo (MemoryAccess *)
 Given a memory access, invalidate anything this walker knows about that access.
 

Additional Inherited Members

- Public Types inherited from llvm::MemorySSAWalker
using MemoryAccessSet = SmallVector< MemoryAccess *, 8 >
 
- Protected Attributes inherited from llvm::MemorySSAWalker
MemorySSAMSSA
 

Detailed Description

A MemorySSAWalker that does no alias queries, or anything else.

It simply returns the links as they were constructed by the builder.

Definition at line 1098 of file MemorySSA.h.

Member Function Documentation

◆ getClobberingMemoryAccess() [1/8]

MemoryAccess * llvm::MemorySSAWalker::getClobberingMemoryAccess ( const Instruction I)
inline

Definition at line 1067 of file MemorySSA.h.

◆ getClobberingMemoryAccess() [2/8]

MemoryAccess * llvm::MemorySSAWalker::getClobberingMemoryAccess ( const Instruction I,
BatchAAResults AA 
)
inline

Given a memory Mod/Ref/ModRef'ing instruction, calling this will give you the nearest dominating MemoryAccess that Mod's the location the instruction accesses (by skipping any def which AA can prove does not alias the location(s) accessed by the instruction given).

Note that this will return a single access, and it must dominate the Instruction, so if an operand of a MemoryPhi node Mod's the instruction, this will return the MemoryPhi, not the operand. This means that given: if (a) { 1 = MemoryDef(liveOnEntry) store a } else { 2 = MemoryDef(liveOnEntry) store b } 3 = MemoryPhi(2, 1) MemoryUse(3) load a

calling this API on load(a) will return the MemoryPhi, not the MemoryDef in the if (a) branch.

Definition at line 1040 of file MemorySSA.h.

◆ getClobberingMemoryAccess() [3/8]

MemoryAccess * DoNothingMemorySSAWalker::getClobberingMemoryAccess ( MemoryAccess ,
BatchAAResults AA 
)
overridevirtual

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

Implements llvm::MemorySSAWalker.

Definition at line 2578 of file MemorySSA.cpp.

◆ getClobberingMemoryAccess() [4/8]

virtual MemoryAccess * llvm::MemorySSAWalker::getClobberingMemoryAccess ( MemoryAccess ,
BatchAAResults AA 
)
virtual

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

Implements llvm::MemorySSAWalker.

◆ getClobberingMemoryAccess() [5/8]

MemoryAccess * DoNothingMemorySSAWalker::getClobberingMemoryAccess ( MemoryAccess ,
const MemoryLocation ,
BatchAAResults AA 
)
overridevirtual

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.

Implements llvm::MemorySSAWalker.

Definition at line 2585 of file MemorySSA.cpp.

◆ getClobberingMemoryAccess() [6/8]

virtual MemoryAccess * llvm::MemorySSAWalker::getClobberingMemoryAccess ( MemoryAccess ,
const MemoryLocation ,
BatchAAResults AA 
)
virtual

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.

Implements llvm::MemorySSAWalker.

◆ getClobberingMemoryAccess() [7/8]

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

Definition at line 1072 of file MemorySSA.h.

◆ getClobberingMemoryAccess() [8/8]

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

Definition at line 1077 of file MemorySSA.h.


The documentation for this class was generated from the following files: