LLVM
15.0.0git
|
#include "llvm/Analysis/AliasSetTracker.h"
Public Types | |
using | iterator = ilist< AliasSet >::iterator |
using | const_iterator = ilist< AliasSet >::const_iterator |
Public Member Functions | |
AliasSetTracker (AAResults &AA) | |
Create an empty collection of AliasSets, and use the specified alias analysis object to disambiguate load and store addresses. More... | |
~AliasSetTracker () | |
void | add (Value *Ptr, LocationSize Size, const AAMDNodes &AAInfo) |
These methods are used to add different types of instructions to the alias sets. More... | |
void | add (LoadInst *LI) |
void | add (StoreInst *SI) |
void | add (VAArgInst *VAAI) |
void | add (AnyMemSetInst *MSI) |
void | add (AnyMemTransferInst *MTI) |
void | add (Instruction *I) |
void | add (BasicBlock &BB) |
void | add (const AliasSetTracker &AST) |
void | addUnknown (Instruction *I) |
void | clear () |
const ilist< AliasSet > & | getAliasSets () const |
Return the alias sets that are active. More... | |
AliasSet & | getAliasSetFor (const MemoryLocation &MemLoc) |
Return the alias set which contains the specified memory location. More... | |
AAResults & | getAliasAnalysis () const |
Return the underlying alias analysis object used by this tracker. More... | |
void | deleteValue (Value *PtrVal) |
This method is used to remove a pointer value from the AliasSetTracker entirely. More... | |
void | copyValue (Value *From, Value *To) |
This method should be used whenever a preexisting value in the program is copied or cloned, introducing a new value. More... | |
const_iterator | begin () const |
const_iterator | end () const |
iterator | begin () |
iterator | end () |
void | print (raw_ostream &OS) const |
void | dump () const |
Friends | |
class | AliasSet |
Definition at line 326 of file AliasSetTracker.h.
Definition at line 409 of file AliasSetTracker.h.
using llvm::AliasSetTracker::iterator = ilist<AliasSet>::iterator |
Definition at line 408 of file AliasSetTracker.h.
|
inlineexplicit |
Create an empty collection of AliasSets, and use the specified alias analysis object to disambiguate load and store addresses.
Definition at line 356 of file AliasSetTracker.h.
|
inline |
Definition at line 357 of file AliasSetTracker.h.
References clear().
void AliasSetTracker::add | ( | AnyMemSetInst * | MSI | ) |
Definition at line 414 of file AliasSetTracker.cpp.
References llvm::MemoryLocation::getForDest().
void AliasSetTracker::add | ( | AnyMemTransferInst * | MTI | ) |
Definition at line 418 of file AliasSetTracker.cpp.
References llvm::MemoryLocation::getForDest(), and llvm::MemoryLocation::getForSource().
void AliasSetTracker::add | ( | BasicBlock & | BB | ) |
Definition at line 507 of file AliasSetTracker.cpp.
References llvm::ARM_AM::add, BB, and I.
void AliasSetTracker::add | ( | const AliasSetTracker & | AST | ) |
Definition at line 512 of file AliasSetTracker.cpp.
References llvm::ARM_AM::add, assert(), llvm::AliasSet::begin(), llvm::numbers::e, E, llvm::AliasSet::end(), and i.
void AliasSetTracker::add | ( | Instruction * | I | ) |
Definition at line 452 of file AliasSetTracker.cpp.
References llvm::ARM_AM::add, Arg, llvm::clearMod(), llvm::createModRefInfo(), llvm::enumerate(), llvm::MemoryLocation::getForArgument(), I, llvm::intersectModRef(), llvm::isModSet(), llvm::isNoModRef(), llvm::isRefSet(), llvm::PatternMatch::match(), MRI, and SI.
void AliasSetTracker::add | ( | LoadInst * | LI | ) |
Definition at line 398 of file AliasSetTracker.cpp.
References llvm::MemoryLocation::get(), llvm::LoadInst::getOrdering(), and llvm::isStrongerThanMonotonic().
void AliasSetTracker::add | ( | StoreInst * | SI | ) |
Definition at line 404 of file AliasSetTracker.cpp.
References llvm::MemoryLocation::get(), llvm::isStrongerThanMonotonic(), and SI.
void AliasSetTracker::add | ( | VAArgInst * | VAAI | ) |
Definition at line 410 of file AliasSetTracker.cpp.
References llvm::MemoryLocation::get().
void AliasSetTracker::add | ( | Value * | Ptr, |
LocationSize | Size, | ||
const AAMDNodes & | AAInfo | ||
) |
These methods are used to add different types of instructions to the alias sets.
Adding a new instruction can result in one of three actions happening:
These methods return true if inserting the instruction resulted in the addition of a new alias set (i.e., the pointer did not alias anything).
Definition at line 393 of file AliasSetTracker.cpp.
Referenced by collectPromotionCandidates().
void AliasSetTracker::addUnknown | ( | Instruction * | I | ) |
Definition at line 423 of file AliasSetTracker.cpp.
References llvm::Instruction::mayReadOrWriteMemory().
|
inline |
Definition at line 414 of file AliasSetTracker.h.
|
inline |
Definition at line 411 of file AliasSetTracker.h.
void AliasSetTracker::clear | ( | ) |
This method should be used whenever a preexisting value in the program is copied or cloned, introducing a new value.
Note that it is ok for clients that use this method to introduce the same value multiple times: if the tracker already knows about a value, it will ignore the request.
Definition at line 569 of file AliasSetTracker.cpp.
void AliasSetTracker::deleteValue | ( | Value * | PtrVal | ) |
This method is used to remove a pointer value from the AliasSetTracker entirely.
It should be used when an instruction is deleted from the program to update the AST. If you don't use this, you would have dangling pointers to deleted instructions.
Definition at line 541 of file AliasSetTracker.cpp.
References I.
LLVM_DUMP_METHOD void AliasSetTracker::dump | ( | ) | const |
Definition at line 695 of file AliasSetTracker.cpp.
References llvm::dbgs(), and llvm::AliasSet::print().
|
inline |
Definition at line 415 of file AliasSetTracker.h.
|
inline |
Definition at line 412 of file AliasSetTracker.h.
|
inline |
Return the underlying alias analysis object used by this tracker.
Definition at line 394 of file AliasSetTracker.h.
Referenced by llvm::AliasSet::mergeSetIn().
AliasSet & AliasSetTracker::getAliasSetFor | ( | const MemoryLocation & | MemLoc | ) |
Return the alias set which contains the specified memory location.
If the memory location aliases two or more existing alias sets, will have the effect of merging those alias sets before the single resulting alias set is returned.
Definition at line 342 of file AliasSetTracker.cpp.
References llvm::MemoryLocation::AATags, llvm::MemoryLocation::Ptr, and llvm::MemoryLocation::Size.
Return the alias sets that are active.
Definition at line 385 of file AliasSetTracker.h.
void AliasSetTracker::print | ( | raw_ostream & | OS | ) | const |
Definition at line 683 of file AliasSetTracker.cpp.
References llvm::AliasSet::print().
Referenced by llvm::operator<<().
|
friend |
Definition at line 421 of file AliasSetTracker.h.