LLVM  4.0.0
Classes | Namespaces | Typedefs | Enumerations | Functions
MemorySSA.h File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/ilist.h"
#include "llvm/ADT/ilist_node.h"
#include "llvm/ADT/iterator.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/MemoryLocation.h"
#include "llvm/Analysis/PHITransAddr.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/OperandTraits.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/Pass.h"
#include "llvm/PassAnalysisSupport.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <iterator>
#include <memory>
#include <utility>
Include dependency graph for MemorySSA.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::memoryaccess_def_iterator_base< T >
 Iterator base class used to implement const and non-const iterators over the defining accesses of a MemoryAccess. More...
 
class  llvm::MemoryAccess
 
class  llvm::MemoryUseOrDef
 Class that has the common methods + fields of memory uses/defs. More...
 
struct  llvm::OperandTraits< MemoryUseOrDef >
 
class  llvm::MemoryUse
 Represents read-only accesses to memory. More...
 
struct  llvm::OperandTraits< MemoryUse >
 
class  llvm::MemoryDef
 Represents a read-write access to memory, whether it is a must-alias, or a may-alias. More...
 
struct  llvm::OperandTraits< MemoryDef >
 
class  llvm::MemoryPhi
 Represents phi nodes for memory accesses. More...
 
struct  llvm::OperandTraits< MemoryPhi >
 
class  llvm::MemorySSA
 Encapsulates MemorySSA, including all data associated with memory accesses. More...
 
class  llvm::MemorySSAPrinterLegacyPass
 
class  llvm::MemorySSAAnalysis
 An analysis that produces MemorySSA for a function. More...
 
struct  llvm::MemorySSAAnalysis::Result
 
class  llvm::MemorySSAPrinterPass
 Printer pass for MemorySSA. More...
 
struct  llvm::MemorySSAVerifierPass
 Verifier pass for MemorySSA. More...
 
class  llvm::MemorySSAWrapperPass
 Legacy analysis pass which computes MemorySSA. More...
 
class  llvm::MemorySSAWalker
 This is the generic walker interface for walkers of MemorySSA. More...
 
class  llvm::DoNothingMemorySSAWalker
 A MemorySSAWalker that does no alias queries, or anything else. More...
 
class  llvm::memoryaccess_def_iterator_base< T >
 Iterator base class used to implement const and non-const iterators over the defining accesses of a MemoryAccess. More...
 
struct  llvm::GraphTraits< MemoryAccess * >
 GraphTraits for a MemoryAccess, which walks defs in the normal case, and uses in the inverse case. More...
 
struct  llvm::GraphTraits< Inverse< MemoryAccess * > >
 
class  llvm::upward_defs_iterator
 Provide an iterator that walks defs, giving both the memory access, and the current pointer location, updating the pointer location as it changes due to phi node translation. More...
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Typedefs

using llvm::memoryaccess_def_iterator = memoryaccess_def_iterator_base< MemoryAccess >
 
using llvm::const_memoryaccess_def_iterator = memoryaccess_def_iterator_base< const MemoryAccess >
 
using llvm::MemoryAccessPair = std::pair< MemoryAccess *, MemoryLocation >
 
using llvm::ConstMemoryAccessPair = std::pair< const MemoryAccess *, MemoryLocation >
 

Enumerations

enum  { llvm::INVALID_MEMORYACCESS_ID = 0 }
 

Functions

raw_ostream & llvm::operator<< (raw_ostream &OS, const MemoryAccess &MA)
 
upward_defs_iterator llvm::upward_defs_begin (const MemoryAccessPair &Pair)
 
upward_defs_iterator llvm::upward_defs_end ()
 
bool llvm::defClobbersUseOrDef (MemoryDef *MD, const MemoryUseOrDef *MU, AliasAnalysis &AA)