class SCCPInstVisitor
Declaration
class SCCPInstVisitor : public InstVisitor { /* full declaration omitted */ };
Description
Helper class for SCCPSolver. This implements the instruction visitor and holds all the state.
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:67
Inherits from: InstVisitor
Member Variables
- private const llvm::DataLayout& DL
- private std::function<const TargetLibraryInfo&(Function&)> GetTLI
- private SmallPtrSet<llvm::BasicBlock*, 8> BBExecutable
- private DenseMap<llvm::Value*, llvm::ValueLatticeElement> ValueState
- private DenseMap<std::pair<Value*, unsigned int>, llvm::ValueLatticeElement> StructValueState
- StructValueState - This maintains ValueState for values that have StructType, for example for formal arguments, calls, insertelement, etc.
- private DenseMap<llvm::GlobalVariable*, llvm::ValueLatticeElement> TrackedGlobals
- GlobalValue - If we are tracking any values for the contents of a global variable, we keep a mapping from the constant accessor to the element of the global, to the currently known value. If the value becomes overdefined, it's entry is simply removed from this map.
- private MapVector<llvm::Function*, llvm::ValueLatticeElement> TrackedRetVals
- TrackedRetVals - If we are tracking arguments into and the return value out of a function, it will have an entry in this map, indicating what the known return value for the function is.
- private MapVector<std::pair<Function*, unsigned int>, llvm::ValueLatticeElement> TrackedMultipleRetVals
- TrackedMultipleRetVals - Same as TrackedRetVals, but used for functions that return multiple values.
- private SmallPtrSet<llvm::Function*, 16> MRVFunctionsTracked
- MRVFunctionsTracked - Each function in TrackedMultipleRetVals is represented here for efficient lookup.
- private SmallPtrSet<llvm::Function*, 16> MustPreserveReturnsInFunctions
- A list of functions whose return cannot be modified.
- private SmallPtrSet<llvm::Function*, 16> TrackingIncomingArguments
- TrackingIncomingArguments - This is the set of functions for whose arguments we make optimistic assumptions about and try to prove as constants.
- private SmallVector<llvm::Value*, 64> OverdefinedInstWorkList
- By having a separate worklist, we accomplish this because everything possibly overdefined will become overdefined at the soonest possible point.
- private SmallVector<llvm::Value*, 64> InstWorkList
- private SmallVector<llvm::BasicBlock*, 64> BBWorkList
- private DenseSet<llvm::SCCPInstVisitor::Edge> KnownFeasibleEdges
- private DenseMap<llvm::Function*, llvm::AnalysisResultsForFn> AnalysisResults
- private DenseMap<llvm::Value*, SmallPtrSet<llvm::User*, 2>> AdditionalUsers
- private llvm::LLVMContext& Ctx
Method Overview
- public SCCPInstVisitor(const llvm::DataLayout & DL, std::function<const TargetLibraryInfo &(Function &)> GetTLI, llvm::LLVMContext & Ctx)
- private void addAdditionalUser(llvm::Value * V, llvm::User * U)
- public void addAnalysis(llvm::Function & F, llvm::AnalysisResultsForFn A)
- public void addArgumentTrackedFunction(llvm::Function * F)
- public void addToMustPreserveReturnsInFunctions(llvm::Function * F)
- public void addTrackedFunction(llvm::Function * F)
- public SmallPtrSetImpl<llvm::Function *> & getArgumentTrackedFunctions()
- public llvm::Constant * getConstant(const llvm::ValueLatticeElement & LV) const
- private llvm::ConstantInt * getConstantInt(const llvm::ValueLatticeElement & IV) const
- public llvm::DomTreeUpdater getDTU(llvm::Function & F)
- private void getFeasibleSuccessors(llvm::Instruction & TI, SmallVectorImpl<bool> & Succs)
- public const llvm::ValueLatticeElement & getLatticeValueFor(llvm::Value * V) const
- public const SmallPtrSet<llvm::Function *, 16> getMRVFunctionsTracked()
- public const llvm::PredicateBase * getPredicateInfoFor(llvm::Instruction * I)
- public std::vector<ValueLatticeElement> getStructLatticeValueFor(llvm::Value * V) const
- private llvm::ValueLatticeElement & getStructValueState(llvm::Value * V, unsigned int i)
- public const DenseMap<llvm::GlobalVariable *, llvm::ValueLatticeElement> & getTrackedGlobals()
- public const MapVector<llvm::Function *, llvm::ValueLatticeElement> & getTrackedRetVals()
- private llvm::ValueLatticeElement & getValueState(llvm::Value * V)
- private void handleCallArguments(llvm::CallBase & CB)
- private void handleCallOverdefined(llvm::CallBase & CB)
- private void handleCallResult(llvm::CallBase & CB)
- public bool isArgumentTrackedFunction(llvm::Function * F)
- public bool isBlockExecutable(llvm::BasicBlock * BB) const
- public bool isEdgeFeasible(llvm::BasicBlock * From, llvm::BasicBlock * To) const
- public bool isStructLatticeConstant(llvm::Function * F, llvm::StructType * STy)
- public void markArgInFuncSpecialization(llvm::Function * F, const SmallVectorImpl<llvm::ArgInfo> & Args)
- public bool markBlockExecutable(llvm::BasicBlock * BB)
- private bool markConstant(llvm::ValueLatticeElement & IV, llvm::Value * V, llvm::Constant * C, bool MayIncludeUndef = false)
- private bool markConstant(llvm::Value * V, llvm::Constant * C)
- private bool markEdgeExecutable(llvm::BasicBlock * Source, llvm::BasicBlock * Dest)
- public void markFunctionUnreachable(llvm::Function * F)
- private bool markOverdefined(llvm::ValueLatticeElement & IV, llvm::Value * V)
- public void markOverdefined(llvm::Value * V)
- private void markUsersAsChanged(llvm::Value * I)
- private bool mergeInValue(llvm::Value * V, llvm::ValueLatticeElement MergeWithV, ValueLatticeElement::MergeOptions Opts = {false, false})
- private bool mergeInValue(llvm::ValueLatticeElement & IV, llvm::Value * V, llvm::ValueLatticeElement MergeWithV, ValueLatticeElement::MergeOptions Opts = {false, false})
- public bool mustPreserveReturn(llvm::Function * F)
- private void operandChangedState(llvm::Instruction * I)
- private void pushToWorkList(llvm::ValueLatticeElement & IV, llvm::Value * V)
- private void pushToWorkListMsg(llvm::ValueLatticeElement & IV, llvm::Value * V)
- public void removeLatticeValueFor(llvm::Value * V)
- public bool resolvedUndefsIn(llvm::Function & F)
- public void solve()
- public void trackValueOfGlobalVariable(llvm::GlobalVariable * GV)
- private void visitBinaryOperator(llvm::Instruction & I)
- private void visitCallBase(llvm::CallBase & CB)
- private void visitCallBrInst(llvm::CallBrInst & CBI)
- public void visitCallInst(llvm::CallInst & I)
- private void visitCastInst(llvm::CastInst & I)
- private void visitCatchSwitchInst(llvm::CatchSwitchInst & CPI)
- private void visitCmpInst(llvm::CmpInst & I)
- private void visitExtractValueInst(llvm::ExtractValueInst & EVI)
- private void visitFenceInst(llvm::FenceInst & I)
- private void visitGetElementPtrInst(llvm::GetElementPtrInst & I)
- private void visitInsertValueInst(llvm::InsertValueInst & IVI)
- private void visitInstruction(llvm::Instruction & I)
- private void visitInvokeInst(llvm::InvokeInst & II)
- private void visitLoadInst(llvm::LoadInst & I)
- private void visitPHINode(llvm::PHINode & I)
- private void visitResumeInst(llvm::ResumeInst & I)
- private void visitReturnInst(llvm::ReturnInst & I)
- private void visitSelectInst(llvm::SelectInst & I)
- private void visitStoreInst(llvm::StoreInst & I)
- private void visitTerminator(llvm::Instruction & TI)
- private void visitUnaryOperator(llvm::Instruction & I)
- private void visitUnreachableInst(llvm::UnreachableInst & I)
Methods
¶SCCPInstVisitor(
const llvm::DataLayout& DL,
std::function<const TargetLibraryInfo&(
Function&)> GetTLI,
llvm::LLVMContext& Ctx)
SCCPInstVisitor(
const llvm::DataLayout& DL,
std::function<const TargetLibraryInfo&(
Function&)> GetTLI,
llvm::LLVMContext& Ctx)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:348
Parameters
- const llvm::DataLayout& DL
- std::function<const TargetLibraryInfo&(Function&)> GetTLI
- llvm::LLVMContext& Ctx
¶void addAdditionalUser(llvm::Value* V,
llvm::User* U)
void addAdditionalUser(llvm::Value* V,
llvm::User* U)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:236
Parameters
- llvm::Value* V
- llvm::User* U
¶void addAnalysis(llvm::Function& F,
llvm::AnalysisResultsForFn A)
void addAnalysis(llvm::Function& F,
llvm::AnalysisResultsForFn A)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:327
Parameters
¶void addArgumentTrackedFunction(llvm::Function* F)
void addArgumentTrackedFunction(llvm::Function* F)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:380
Parameters
¶void addToMustPreserveReturnsInFunctions(
llvm::Function* F)
void addToMustPreserveReturnsInFunctions(
llvm::Function* F)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:372
Parameters
¶void addTrackedFunction(llvm::Function* F)
void addTrackedFunction(llvm::Function* F)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:361
Parameters
¶SmallPtrSetImpl<llvm::Function*>&
getArgumentTrackedFunctions()
SmallPtrSetImpl<llvm::Function*>&
getArgumentTrackedFunctions()
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:446
¶llvm::Constant* getConstant(
const llvm::ValueLatticeElement& LV) const
llvm::Constant* getConstant(
const llvm::ValueLatticeElement& LV) const
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:444
Parameters
- const llvm::ValueLatticeElement& LV
¶llvm::ConstantInt* getConstantInt(
const llvm::ValueLatticeElement& IV) const
llvm::ConstantInt* getConstantInt(
const llvm::ValueLatticeElement& IV) const
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:130
Parameters
- const llvm::ValueLatticeElement& IV
¶llvm::DomTreeUpdater getDTU(llvm::Function& F)
llvm::DomTreeUpdater getDTU(llvm::Function& F)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:342
Parameters
¶void getFeasibleSuccessors(
llvm::Instruction& TI,
SmallVectorImpl<bool>& Succs)
void getFeasibleSuccessors(
llvm::Instruction& TI,
SmallVectorImpl<bool>& Succs)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:225
Parameters
- llvm::Instruction& TI
- SmallVectorImpl<bool>& Succs
¶const llvm::ValueLatticeElement&
getLatticeValueFor(llvm::Value* V) const
const llvm::ValueLatticeElement&
getLatticeValueFor(llvm::Value* V) const
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:412
Parameters
- llvm::Value* V
¶const SmallPtrSet<llvm::Function*, 16>
getMRVFunctionsTracked()
const SmallPtrSet<llvm::Function*, 16>
getMRVFunctionsTracked()
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:430
¶const llvm::PredicateBase* getPredicateInfoFor(
llvm::Instruction* I)
const llvm::PredicateBase* getPredicateInfoFor(
llvm::Instruction* I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:335
Parameters
¶std::vector<ValueLatticeElement>
getStructLatticeValueFor(llvm::Value* V) const
std::vector<ValueLatticeElement>
getStructLatticeValueFor(llvm::Value* V) const
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:398
Parameters
- llvm::Value* V
¶llvm::ValueLatticeElement& getStructValueState(
llvm::Value* V,
unsigned int i)
llvm::ValueLatticeElement& getStructValueState(
llvm::Value* V,
unsigned int i)
Description
getStructValueState - Return the ValueLatticeElement object that corresponds to the value/field pair. This function handles the case when the value hasn't been seen yet by properly seeding constants etc.
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:194
Parameters
- llvm::Value* V
- unsigned int i
¶const DenseMap<llvm::GlobalVariable*,
llvm::ValueLatticeElement>&
getTrackedGlobals()
const DenseMap<llvm::GlobalVariable*,
llvm::ValueLatticeElement>&
getTrackedGlobals()
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:426
¶const MapVector<llvm::Function*,
llvm::ValueLatticeElement>&
getTrackedRetVals()
const MapVector<llvm::Function*,
llvm::ValueLatticeElement>&
getTrackedRetVals()
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:422
¶llvm::ValueLatticeElement& getValueState(
llvm::Value* V)
llvm::ValueLatticeElement& getValueState(
llvm::Value* V)
Description
getValueState - Return the ValueLatticeElement object that corresponds to the value. This function handles the case when the value hasn't been seen yet by properly seeding constants etc.
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:175
Parameters
- llvm::Value* V
¶void handleCallArguments(llvm::CallBase& CB)
void handleCallArguments(llvm::CallBase& CB)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:272
Parameters
- llvm::CallBase& CB
¶void handleCallOverdefined(llvm::CallBase& CB)
void handleCallOverdefined(llvm::CallBase& CB)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:270
Parameters
- llvm::CallBase& CB
¶void handleCallResult(llvm::CallBase& CB)
void handleCallResult(llvm::CallBase& CB)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:271
Parameters
- llvm::CallBase& CB
¶bool isArgumentTrackedFunction(llvm::Function* F)
bool isArgumentTrackedFunction(llvm::Function* F)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:384
Parameters
¶bool isBlockExecutable(llvm::BasicBlock* BB) const
bool isBlockExecutable(llvm::BasicBlock* BB) const
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:392
Parameters
- llvm::BasicBlock* BB
¶bool isEdgeFeasible(llvm::BasicBlock* From,
llvm::BasicBlock* To) const
bool isEdgeFeasible(llvm::BasicBlock* From,
llvm::BasicBlock* To) const
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:396
Parameters
- llvm::BasicBlock* From
- llvm::BasicBlock* To
¶bool isStructLatticeConstant(
llvm::Function* F,
llvm::StructType* STy)
bool isStructLatticeConstant(
llvm::Function* F,
llvm::StructType* STy)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:442
Parameters
- llvm::Function* F
- llvm::StructType* STy
¶void markArgInFuncSpecialization(
llvm::Function* F,
const SmallVectorImpl<llvm::ArgInfo>& Args)
void markArgInFuncSpecialization(
llvm::Function* F,
const SmallVectorImpl<llvm::ArgInfo>& Args)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:450
Parameters
- llvm::Function* F
- const SmallVectorImpl<llvm::ArgInfo>& Args
¶bool markBlockExecutable(llvm::BasicBlock* BB)
bool markBlockExecutable(llvm::BasicBlock* BB)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:333
Parameters
- llvm::BasicBlock* BB
¶bool markConstant(llvm::ValueLatticeElement& IV,
llvm::Value* V,
llvm::Constant* C,
bool MayIncludeUndef = false)
bool markConstant(llvm::ValueLatticeElement& IV,
llvm::Value* V,
llvm::Constant* C,
bool MayIncludeUndef = false)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:144
Parameters
- llvm::ValueLatticeElement& IV
- llvm::Value* V
- llvm::Constant* C
- bool MayIncludeUndef = false
¶bool markConstant(llvm::Value* V,
llvm::Constant* C)
bool markConstant(llvm::Value* V,
llvm::Constant* C)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:147
Parameters
¶bool markEdgeExecutable(llvm::BasicBlock* Source,
llvm::BasicBlock* Dest)
bool markEdgeExecutable(llvm::BasicBlock* Source,
llvm::BasicBlock* Dest)
Description
markEdgeExecutable - Mark a basic block as executable, adding it to the BB work list if it is not already executable.
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:221
Parameters
- llvm::BasicBlock* Source
- llvm::BasicBlock* Dest
¶void markFunctionUnreachable(llvm::Function* F)
void markFunctionUnreachable(llvm::Function* F)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:453
Parameters
¶bool markOverdefined(
llvm::ValueLatticeElement& IV,
llvm::Value* V)
bool markOverdefined(
llvm::ValueLatticeElement& IV,
llvm::Value* V)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:155
Parameters
¶void markOverdefined(llvm::Value* V)
void markOverdefined(llvm::Value* V)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:434
Parameters
- llvm::Value* V
¶void markUsersAsChanged(llvm::Value* I)
void markUsersAsChanged(llvm::Value* I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:242
Parameters
- llvm::Value* I
¶bool mergeInValue(
llvm::Value* V,
llvm::ValueLatticeElement MergeWithV,
ValueLatticeElement::MergeOptions Opts = {
false, false})
bool mergeInValue(
llvm::Value* V,
llvm::ValueLatticeElement MergeWithV,
ValueLatticeElement::MergeOptions Opts = {
false, false})
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:164
Parameters
- llvm::Value* V
- llvm::ValueLatticeElement MergeWithV
- ValueLatticeElement::MergeOptions Opts = {false, false}
¶bool mergeInValue(
llvm::ValueLatticeElement& IV,
llvm::Value* V,
llvm::ValueLatticeElement MergeWithV,
ValueLatticeElement::MergeOptions Opts = {
false, false})
bool mergeInValue(
llvm::ValueLatticeElement& IV,
llvm::Value* V,
llvm::ValueLatticeElement MergeWithV,
ValueLatticeElement::MergeOptions Opts = {
false, false})
Description
Merge \p MergeWithV into \p IV and push \p V to the worklist, if \p IV changes.
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:159
Parameters
- llvm::ValueLatticeElement& IV
- llvm::Value* V
- llvm::ValueLatticeElement MergeWithV
- ValueLatticeElement::MergeOptions Opts = {false, false}
¶bool mustPreserveReturn(llvm::Function* F)
bool mustPreserveReturn(llvm::Function* F)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:376
Parameters
¶void operandChangedState(llvm::Instruction* I)
void operandChangedState(llvm::Instruction* I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:230
Parameters
¶void pushToWorkList(llvm::ValueLatticeElement& IV,
llvm::Value* V)
void pushToWorkList(llvm::ValueLatticeElement& IV,
llvm::Value* V)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:135
Parameters
¶void pushToWorkListMsg(
llvm::ValueLatticeElement& IV,
llvm::Value* V)
void pushToWorkListMsg(
llvm::ValueLatticeElement& IV,
llvm::Value* V)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:139
Parameters
¶void removeLatticeValueFor(llvm::Value* V)
void removeLatticeValueFor(llvm::Value* V)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:410
Parameters
- llvm::Value* V
¶bool resolvedUndefsIn(llvm::Function& F)
bool resolvedUndefsIn(llvm::Function& F)
Description
While solving the dataflow for a function, we don't compute a result for operations with an undef operand, to allow undef to be lowered to a constant later. For example, constant folding of "zext i8 undef to i16" would result in "i16 0", and if undef is later lowered to "i8 1", then the zext result would become "i16 1" and would result into an overdefined lattice value once merged with the previous result. Not computing the result of the zext (treating undef the same as unknown) allows us to handle a later undef->constant lowering more optimally. However, if the operand remains undef when the solver returns, we do need to assign some result to the instruction (otherwise we would treat it as unreachable). For simplicity, we mark any instructions that are still unknown as overdefined.
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:390
Parameters
¶void solve()
void solve()
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:388
¶void trackValueOfGlobalVariable(
llvm::GlobalVariable* GV)
void trackValueOfGlobalVariable(
llvm::GlobalVariable* GV)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:353
Parameters
¶void visitBinaryOperator(llvm::Instruction& I)
void visitBinaryOperator(llvm::Instruction& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:290
Parameters
¶void visitCallBase(llvm::CallBase& CB)
void visitCallBase(llvm::CallBase& CB)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:316
Parameters
- llvm::CallBase& CB
¶void visitCallBrInst(llvm::CallBrInst& CBI)
void visitCallBrInst(llvm::CallBrInst& CBI)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:311
Parameters
- llvm::CallBrInst& CBI
¶void visitCallInst(llvm::CallInst& I)
void visitCallInst(llvm::CallInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:331
Parameters
¶void visitCastInst(llvm::CastInst& I)
void visitCastInst(llvm::CastInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:287
Parameters
¶void visitCatchSwitchInst(
llvm::CatchSwitchInst& CPI)
void visitCatchSwitchInst(
llvm::CatchSwitchInst& CPI)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:295
Parameters
¶void visitCmpInst(llvm::CmpInst& I)
void visitCmpInst(llvm::CmpInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:291
Parameters
¶void visitExtractValueInst(
llvm::ExtractValueInst& EVI)
void visitExtractValueInst(
llvm::ExtractValueInst& EVI)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:292
Parameters
¶void visitFenceInst(llvm::FenceInst& I)
void visitFenceInst(llvm::FenceInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:321
Parameters
¶void visitGetElementPtrInst(
llvm::GetElementPtrInst& I)
void visitGetElementPtrInst(
llvm::GetElementPtrInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:304
Parameters
¶void visitInsertValueInst(
llvm::InsertValueInst& IVI)
void visitInsertValueInst(
llvm::InsertValueInst& IVI)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:293
Parameters
¶void visitInstruction(llvm::Instruction& I)
void visitInstruction(llvm::Instruction& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:324
Parameters
¶void visitInvokeInst(llvm::InvokeInst& II)
void visitInvokeInst(llvm::InvokeInst& II)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:306
Parameters
- llvm::InvokeInst& II
¶void visitLoadInst(llvm::LoadInst& I)
void visitLoadInst(llvm::LoadInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:303
Parameters
¶void visitPHINode(llvm::PHINode& I)
void visitPHINode(llvm::PHINode& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:280
Parameters
¶void visitResumeInst(llvm::ResumeInst& I)
void visitResumeInst(llvm::ResumeInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:317
Parameters
¶void visitReturnInst(llvm::ReturnInst& I)
void visitReturnInst(llvm::ReturnInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:284
Parameters
¶void visitSelectInst(llvm::SelectInst& I)
void visitSelectInst(llvm::SelectInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:288
Parameters
¶void visitStoreInst(llvm::StoreInst& I)
void visitStoreInst(llvm::StoreInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:302
Parameters
¶void visitTerminator(llvm::Instruction& TI)
void visitTerminator(llvm::Instruction& TI)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:285
Parameters
¶void visitUnaryOperator(llvm::Instruction& I)
void visitUnaryOperator(llvm::Instruction& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:289
Parameters
¶void visitUnreachableInst(
llvm::UnreachableInst& I)
void visitUnreachableInst(
llvm::UnreachableInst& I)
Declared at: llvm/lib/Transforms/Utils/SCCPSolver.cpp:319