17#ifndef LLVM_ADT_GENERICSSACONTEXT_H
18#define LLVM_ADT_GENERICSSACONTEXT_H
24template <
typename,
bool>
class DominatorTreeBase;
25template <
typename>
class SmallVectorImpl;
43 const typename SSATraits::FunctionT *F;
64 using UseT =
typename SSATraits::UseT;
70 using BlockT =
typename SSATraits::BlockT;
Given that RA is a live value
unify loop Fixup each natural loop to have a single exit block
Core dominator tree base class.
typename SSATraits::InstructionT InstructionT
static void appendBlockTerms(SmallVectorImpl< const InstructionT * > &terms, const BlockT &block)
static void appendBlockDefs(SmallVectorImpl< ValueRefT > &defs, BlockT &block)
typename SSATraits::FunctionT FunctionT
const FunctionT * getFunction() const
static bool isConstantOrUndefValuePhi(const InstructionT &Instr)
static void appendBlockTerms(SmallVectorImpl< InstructionT * > &terms, BlockT &block)
static constexpr ValueRefT * ValueRefNull
GenericSSAContext()=default
static Intrinsic::ID getIntrinsicID(const InstructionT &I)
Printable print(const BlockT *block) const
typename SSATraits::ConstValueRefT ConstValueRefT
static void appendBlockDefs(SmallVectorImpl< ConstValueRefT > &defs, const BlockT &block)
Printable print(ConstValueRefT value) const
typename SSATraits::BlockT BlockT
const BlockT * getDefBlock(ConstValueRefT value) const
typename SSATraits::UseT UseT
Printable print(const InstructionT *inst) const
typename SSATraits::ValueRefT ValueRefT
Printable printAsOperand(const BlockT *BB) const
GenericSSAContext(const FunctionT *F)
Simple wrapper around std::function<void(raw_ostream&)>.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is an optimization pass for GlobalISel generic memory operations.