Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/include/llvm/Analysis/MemorySSAUpdater.h
Show All 37 Lines | |||||
#include "llvm/IR/BasicBlock.h" | #include "llvm/IR/BasicBlock.h" | ||||
#include "llvm/IR/Dominators.h" | #include "llvm/IR/Dominators.h" | ||||
#include "llvm/IR/Module.h" | #include "llvm/IR/Module.h" | ||||
#include "llvm/IR/OperandTraits.h" | #include "llvm/IR/OperandTraits.h" | ||||
#include "llvm/IR/Type.h" | #include "llvm/IR/Type.h" | ||||
#include "llvm/IR/Use.h" | #include "llvm/IR/Use.h" | ||||
#include "llvm/IR/User.h" | #include "llvm/IR/User.h" | ||||
#include "llvm/IR/Value.h" | #include "llvm/IR/Value.h" | ||||
#include "llvm/IR/ValueHandle.h" | |||||
#include "llvm/Pass.h" | #include "llvm/Pass.h" | ||||
#include "llvm/Support/Casting.h" | #include "llvm/Support/Casting.h" | ||||
#include "llvm/Support/ErrorHandling.h" | #include "llvm/Support/ErrorHandling.h" | ||||
namespace llvm { | namespace llvm { | ||||
class Function; | class Function; | ||||
class Instruction; | class Instruction; | ||||
▲ Show 20 Lines • Show All 82 Lines • ▼ Show 20 Lines | public: | ||||
void removeMemoryAccess(MemoryAccess *); | void removeMemoryAccess(MemoryAccess *); | ||||
private: | private: | ||||
// Move What before Where in the MemorySSA IR. | // Move What before Where in the MemorySSA IR. | ||||
template <class WhereType> | template <class WhereType> | ||||
void moveTo(MemoryUseOrDef *What, BasicBlock *BB, WhereType Where); | void moveTo(MemoryUseOrDef *What, BasicBlock *BB, WhereType Where); | ||||
MemoryAccess *getPreviousDef(MemoryAccess *); | MemoryAccess *getPreviousDef(MemoryAccess *); | ||||
MemoryAccess *getPreviousDefInBlock(MemoryAccess *); | MemoryAccess *getPreviousDefInBlock(MemoryAccess *); | ||||
MemoryAccess *getPreviousDefFromEnd(BasicBlock *); | MemoryAccess * | ||||
MemoryAccess *getPreviousDefRecursive(BasicBlock *); | getPreviousDefFromEnd(BasicBlock *, | ||||
DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> &); | |||||
MemoryAccess * | |||||
getPreviousDefRecursive(BasicBlock *, | |||||
DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> &); | |||||
MemoryAccess *recursePhi(MemoryAccess *Phi); | MemoryAccess *recursePhi(MemoryAccess *Phi); | ||||
template <class RangeType> | template <class RangeType> | ||||
MemoryAccess *tryRemoveTrivialPhi(MemoryPhi *Phi, RangeType &Operands); | MemoryAccess *tryRemoveTrivialPhi(MemoryPhi *Phi, RangeType &Operands); | ||||
void fixupDefs(const SmallVectorImpl<MemoryAccess *> &); | void fixupDefs(const SmallVectorImpl<MemoryAccess *> &); | ||||
}; | }; | ||||
} // end namespace llvm | } // end namespace llvm | ||||
#endif // LLVM_ANALYSIS_MEMORYSSAUPDATER_H | #endif // LLVM_ANALYSIS_MEMORYSSAUPDATER_H |