class EarliestEscapeInfo
Declaration
class EarliestEscapeInfo : public CaptureInfo { /* full declaration omitted */ };
Description
Context-sensitive CaptureInfo provider, which computes and caches the earliest common dominator closure of all captures. It provides a good approximation to a precise "captures before" analysis.
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:402
Inherits from: CaptureInfo
Member Variables
- private llvm::DominatorTree& DT
- private const llvm::LoopInfo& LI
- private DenseMap<const llvm::Value*, llvm::Instruction*> EarliestEscapes
- Map from identified local object to an instruction before which it does not escape, or nullptr if it never escapes. The "earliest" instruction may be a conservative approximation, e.g. the first instruction in the function is always a legal choice.
- private DenseMap<llvm::Instruction*, TinyPtrVector<const llvm::Value*>> Inst2Obj
- Reverse map from instruction to the objects it is the earliest escape for. This is used for cache invalidation purposes.
- private const SmallPtrSetImpl<const llvm::Value*>& EphValues
Method Overview
- public EarliestEscapeInfo(llvm::DominatorTree & DT, const llvm::LoopInfo & LI, const SmallPtrSetImpl<const llvm::Value *> & EphValues)
- public bool isNotCapturedBeforeOrAt(const llvm::Value * Object, const llvm::Instruction * I)
- public void removeInstruction(llvm::Instruction * I)
Inherited from CaptureInfo:
Methods
¶EarliestEscapeInfo(
llvm::DominatorTree& DT,
const llvm::LoopInfo& LI,
const SmallPtrSetImpl<const llvm::Value*>&
EphValues)
EarliestEscapeInfo(
llvm::DominatorTree& DT,
const llvm::LoopInfo& LI,
const SmallPtrSetImpl<const llvm::Value*>&
EphValues)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:419
Parameters
- llvm::DominatorTree& DT
- const llvm::LoopInfo& LI
- const SmallPtrSetImpl<const llvm::Value*>& EphValues
¶bool isNotCapturedBeforeOrAt(
const llvm::Value* Object,
const llvm::Instruction* I)
bool isNotCapturedBeforeOrAt(
const llvm::Value* Object,
const llvm::Instruction* I)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:423
Parameters
- const llvm::Value* Object
- const llvm::Instruction* I
¶void removeInstruction(llvm::Instruction* I)
void removeInstruction(llvm::Instruction* I)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:426