class SwitchInst
Declaration
class SwitchInst : public Instruction { /* full declaration omitted */ };
Description
Multiway switch
Declared at: llvm/include/llvm/IR/Instructions.h:3243
Inherits from: Instruction
Member Variables
- private unsigned int ReservedSpace
- public static const unsigned int DefaultPseudoIndex = static_cast<unsigned int>(~0L - 1)
Inherited from Value:
- protected SubclassOptionalData
- protected NumUserOperands
- protected IsUsedByMD
- protected HasName
- protected HasMetadata
- protected HasHungOffUses
- protected HasDescriptor
- public static MaxAlignmentExponent = 32
- public static MaximumAlignment = 1ULL << MaxAlignmentExponent
Method Overview
- public static llvm::SwitchInst * Create(llvm::Value * Value, llvm::BasicBlock * Default, unsigned int NumCases, llvm::Instruction * InsertBefore = nullptr)
- public static llvm::SwitchInst * Create(llvm::Value * Value, llvm::BasicBlock * Default, unsigned int NumCases, llvm::BasicBlock * InsertAtEnd)
- private SwitchInst(llvm::Value * Value, llvm::BasicBlock * Default, unsigned int NumCases, llvm::Instruction * InsertBefore)
- private SwitchInst(llvm::Value * Value, llvm::BasicBlock * Default, unsigned int NumCases, llvm::BasicBlock * InsertAtEnd)
- private SwitchInst(const llvm::SwitchInst & SI)
- public void addCase(llvm::ConstantInt * OnVal, llvm::BasicBlock * Dest)
- public llvm::SwitchInst::ConstCaseIt case_begin() const
- public llvm::SwitchInst::CaseIt case_begin()
- public llvm::SwitchInst::ConstCaseIt case_default() const
- public llvm::SwitchInst::CaseIt case_default()
- public llvm::SwitchInst::CaseIt case_end()
- public llvm::SwitchInst::ConstCaseIt case_end() const
- public iterator_range<llvm::SwitchInst::CaseIt> cases()
- public iterator_range<llvm::SwitchInst::ConstCaseIt> cases() const
- public static bool classof(const llvm::Value * V)
- public static bool classof(const llvm::Instruction * I)
- protected llvm::SwitchInst * cloneImpl() const
- public llvm::ConstantInt * findCaseDest(llvm::BasicBlock * BB)
- public llvm::SwitchInst::CaseIt findCaseValue(const llvm::ConstantInt * C)
- public llvm::SwitchInst::ConstCaseIt findCaseValue(const llvm::ConstantInt * C) const
- public llvm::Value * getCondition() const
- public llvm::BasicBlock * getDefaultDest() const
- public unsigned int getNumCases() const
- public unsigned int getNumSuccessors() const
- public llvm::BasicBlock * getSuccessor(unsigned int idx) const
- private void growOperands()
- private void init(llvm::Value * Value, llvm::BasicBlock * Default, unsigned int NumReserved)
- public llvm::SwitchInst::CaseIt removeCase(llvm::SwitchInst::CaseIt I)
- public void setCondition(llvm::Value * V)
- public void setDefaultDest(llvm::BasicBlock * DefaultCase)
- public void setSuccessor(unsigned int idx, llvm::BasicBlock * NewSucc)
Inherited from Instruction:
- public addAnnotationMetadata
- public andIRFlags
- public applyMergedLocation
- public classof
- public clone
- public comesBefore
- public copyFastMathFlags
- public copyFastMathFlags
- public copyIRFlags
- public copyMetadata
- public dropLocation
- public dropPoisonGeneratingFlags
- public dropUndefImplyingAttrsAndUnknownMetadata
- public dropUnknownNonDebugMetadata
- public dropUnknownNonDebugMetadata
- public dropUnknownNonDebugMetadata
- public dropUnknownNonDebugMetadata
- public eraseFromParent
- public extractProfMetadata
- public extractProfTotalWeight
- public getAAMetadata
- public getAllMetadata
- public getAllMetadataOtherThanDebugLoc
- public getDebugLoc
- public getFastMathFlags
- public getFunction
- public getFunction
- public getMetadata
- public getMetadata
- public getModule
- public getModule
- public getNextNonDebugInstruction
- public getNextNonDebugInstruction
- public getNumSuccessors
- public getOpcode
- public getOpcodeName
- public getOpcodeName
- public getParent
- public getParent
- public getPrevNonDebugInstruction
- public getPrevNonDebugInstruction
- protected getSubclassData
- public getSuccessor
- public hasAllowContract
- public hasAllowReassoc
- public hasAllowReciprocal
- public hasApproxFunc
- public hasAtomicLoad
- public hasAtomicStore
- public hasMetadata
- public hasMetadata
- public hasMetadata
- public hasMetadataOtherThanDebugLoc
- public hasNoInfs
- public hasNoNaNs
- public hasNoSignedWrap
- public hasNoSignedZeros
- public hasNoUnsignedWrap
- public hasPoisonGeneratingFlags
- public insertAfter
- public insertBefore
- public isArithmeticShift
- public isAssociative
- public isAssociative
- public isAtomic
- public isBinaryOp
- public isBinaryOp
- public isBitwiseLogicOp
- public isBitwiseLogicOp
- public isCast
- public isCast
- public isCommutative
- public isCommutative
- public isDebugOrPseudoInst
- public isEHPad
- public isExact
- public isExceptionalTerminator
- public isExceptionalTerminator
- public isFast
- public isFenceLike
- public isFuncletPad
- public isFuncletPad
- public isIdempotent
- public isIdempotent
- public isIdenticalTo
- public isIdenticalToWhenDefined
- public isIntDivRem
- public isIntDivRem
- public isLaunderOrStripInvariantGroup
- public isLifetimeStartOrEnd
- public isLogicalShift
- public isNilpotent
- public isNilpotent
- public isOnlyUserOfAnyOperand
- public isSafeToRemove
- public isSameOperationAs
- public isShift
- public isShift
- public isTerminator
- public isTerminator
- public isUnaryOp
- public isUnaryOp
- public isUsedOutsideOfBlock
- public isVolatile
- public mayHaveSideEffects
- public mayReadFromMemory
- public mayReadOrWriteMemory
- public mayThrow
- public mayWriteToMemory
- public moveAfter
- public moveBefore
- public moveBefore
- public removeFromParent
- public replaceSuccessorWith
- public setAAMetadata
- public setDebugLoc
- public setFast
- public setFastMathFlags
- public setHasAllowContract
- public setHasAllowReassoc
- public setHasAllowReciprocal
- public setHasApproxFunc
- public setHasNoInfs
- public setHasNoNaNs
- public setHasNoSignedWrap
- public setHasNoSignedZeros
- public setHasNoUnsignedWrap
- public setIsExact
- public setMetadata
- public setMetadata
- protected setSubclassData
- public setSuccessor
- public swapProfMetadata
- public updateLocationAfterHoist
- public user_back
- public user_back
- public willReturn
Inherited from User:
- protected Op
- protected Op
- protected OpFrom
- protected allocHungoffUses
- public classof
- public dropAllReferences
- public getDescriptor
- public getDescriptor
- public getNumOperands
- public getOperand
- public getOperandList
- public getOperandList
- public getOperandUse
- public getOperandUse
- protected growHungoffUses
- public isDroppable
- public op_begin
- public op_begin
- public op_end
- public op_end
- public operand_values
- public operand_values
- public operands
- public operands
- public replaceUsesOfWith
- public setGlobalVariableNumOperands
- public setNumHungOffUseOperands
- public setOperand
- public value_op_begin
- public value_op_begin
- public value_op_end
- public value_op_end
Inherited from Value:
- public DoPHITranslation
- public DoPHITranslation
- protected addMetadata
- protected addMetadata
- public addUse
- public assertModuleIsMaterialized
- public assertModuleIsMaterializedImpl
- public canBeFreed
- protected clearMetadata
- public clearSubclassOptionalData
- public deleteValue
- public dropDroppableUse
- public dropDroppableUses
- public dropDroppableUsesIn
- public dump
- protected eraseMetadata
- protected getAllMetadata
- public getContext
- protected getMetadata
- protected getMetadata
- protected getMetadata
- protected getMetadata
- public getName
- public getNameOrAsOperand
- public getNumUses
- public getPointerAlignment
- public getPointerDereferenceableBytes
- public getRawSubclassOptionalData
- public getSingleUndroppableUse
- public getSingleUndroppableUse
- protected getSubclassDataFromValue
- public getType
- public getUniqueUndroppableUser
- public getUniqueUndroppableUser
- public getValueID
- public getValueName
- protected hasMetadata
- protected hasMetadata
- protected hasMetadata
- public hasNUndroppableUses
- public hasNUndroppableUsesOrMore
- public hasNUses
- public hasNUsesOrMore
- public hasName
- public hasOneUse
- public hasOneUser
- public hasSameSubclassOptionalData
- public hasValueHandle
- public isSwiftError
- public isTransitiveUsedByMetadataOnly
- public isUsedByMetadata
- public isUsedInBasicBlock
- public materialized_use_begin
- public materialized_use_begin
- public materialized_use_empty
- public materialized_user_begin
- public materialized_user_begin
- public materialized_users
- public materialized_users
- public materialized_uses
- public materialized_uses
- public mutateType
- public print
- public print
- public printAsOperand
- public printAsOperand
- public replaceAllUsesWith
- public replaceNonMetadataUsesWith
- public replaceUsesOutsideBlock
- public replaceUsesWithIf
- public reverseUseList
- protected setMetadata
- protected setMetadata
- public setName
- public setValueName
- protected setValueSubclassData
- public sortUseList
- public stripAndAccumulateConstantOffsets
- public stripAndAccumulateConstantOffsets
- public stripAndAccumulateInBoundsConstantOffsets
- public stripAndAccumulateInBoundsConstantOffsets
- public stripInBoundsConstantOffsets
- public stripInBoundsConstantOffsets
- public stripInBoundsOffsets
- public stripInBoundsOffsets
- public stripPointerCasts
- public stripPointerCasts
- public stripPointerCastsAndAliases
- public stripPointerCastsAndAliases
- public stripPointerCastsForAliasAnalysis
- public stripPointerCastsForAliasAnalysis
- public stripPointerCastsSameRepresentation
- public stripPointerCastsSameRepresentation
- public takeName
- public use_begin
- public use_begin
- public use_empty
- public use_end
- public use_end
- public user_back
- public user_back
- public user_begin
- public user_begin
- public user_empty
- public user_end
- public user_end
- public users
- public users
- public uses
- public uses
Methods
¶static llvm::SwitchInst* Create(
llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumCases,
llvm::Instruction* InsertBefore = nullptr)
static llvm::SwitchInst* Create(
llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumCases,
llvm::Instruction* InsertBefore = nullptr)
Declared at: llvm/include/llvm/IR/Instructions.h:3432
Parameters
- llvm::Value* Value
- llvm::BasicBlock* Default
- unsigned int NumCases
- llvm::Instruction* InsertBefore = nullptr
¶static llvm::SwitchInst* Create(
llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumCases,
llvm::BasicBlock* InsertAtEnd)
static llvm::SwitchInst* Create(
llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumCases,
llvm::BasicBlock* InsertAtEnd)
Declared at: llvm/include/llvm/IR/Instructions.h:3438
Parameters
- llvm::Value* Value
- llvm::BasicBlock* Default
- unsigned int NumCases
- llvm::BasicBlock* InsertAtEnd
¶SwitchInst(llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumCases,
llvm::Instruction* InsertBefore)
SwitchInst(llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumCases,
llvm::Instruction* InsertBefore)
Description
Create a new switch instruction, specifying a value to switch on and a default destination. The number of additional cases can be specified here to make memory allocation more efficient. This constructor can also auto-insert before another instruction.
Declared at: llvm/include/llvm/IR/Instructions.h:3256
Parameters
- llvm::Value* Value
- llvm::BasicBlock* Default
- unsigned int NumCases
- llvm::Instruction* InsertBefore
¶SwitchInst(llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumCases,
llvm::BasicBlock* InsertAtEnd)
SwitchInst(llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumCases,
llvm::BasicBlock* InsertAtEnd)
Description
Create a new switch instruction, specifying a value to switch on and a default destination. The number of additional cases can be specified here to make memory allocation more efficient. This constructor also auto-inserts at the end of the specified BasicBlock.
Declared at: llvm/include/llvm/IR/Instructions.h:3263
Parameters
- llvm::Value* Value
- llvm::BasicBlock* Default
- unsigned int NumCases
- llvm::BasicBlock* InsertAtEnd
¶SwitchInst(const llvm::SwitchInst& SI)
SwitchInst(const llvm::SwitchInst& SI)
Declared at: llvm/include/llvm/IR/Instructions.h:3250
Parameters
- const llvm::SwitchInst& SI
¶void addCase(llvm::ConstantInt* OnVal,
llvm::BasicBlock* Dest)
void addCase(llvm::ConstantInt* OnVal,
llvm::BasicBlock* Dest)
Description
Add an entry to the switch instruction. Note: This action invalidates case_end(). Old case_end() iterator will point to the added case.
Declared at: llvm/include/llvm/IR/Instructions.h:3553
Parameters
- llvm::ConstantInt* OnVal
- llvm::BasicBlock* Dest
¶llvm::SwitchInst::ConstCaseIt case_begin() const
llvm::SwitchInst::ConstCaseIt case_begin() const
Description
Returns a read-only iterator that points to the first case in the SwitchInst.
Declared at: llvm/include/llvm/IR/Instructions.h:3472
¶llvm::SwitchInst::CaseIt case_begin()
llvm::SwitchInst::CaseIt case_begin()
Description
Returns a read/write iterator that points to the first case in the SwitchInst.
Declared at: llvm/include/llvm/IR/Instructions.h:3466
¶llvm::SwitchInst::ConstCaseIt case_default() const
llvm::SwitchInst::ConstCaseIt case_default() const
Declared at: llvm/include/llvm/IR/Instructions.h:3506
¶llvm::SwitchInst::CaseIt case_default()
llvm::SwitchInst::CaseIt case_default()
Description
Returns an iterator that points to the default case. Note: this iterator allows to resolve successor only. Attempt to resolve case value causes an assertion. Also note, that increment and decrement also causes an assertion and makes iterator invalid.
Declared at: llvm/include/llvm/IR/Instructions.h:3503
¶llvm::SwitchInst::CaseIt case_end()
llvm::SwitchInst::CaseIt case_end()
Description
Returns a read/write iterator that points one past the last in the SwitchInst.
Declared at: llvm/include/llvm/IR/Instructions.h:3478
¶llvm::SwitchInst::ConstCaseIt case_end() const
llvm::SwitchInst::ConstCaseIt case_end() const
Description
Returns a read-only iterator that points one past the last in the SwitchInst.
Declared at: llvm/include/llvm/IR/Instructions.h:3484
¶iterator_range<llvm::SwitchInst::CaseIt> cases()
iterator_range<llvm::SwitchInst::CaseIt> cases()
Description
Iteration adapter for range-for loops.
Declared at: llvm/include/llvm/IR/Instructions.h:3489
¶iterator_range<llvm::SwitchInst::ConstCaseIt>
cases() const
iterator_range<llvm::SwitchInst::ConstCaseIt>
cases() const
Description
Constant iteration adapter for range-for loops.
Declared at: llvm/include/llvm/IR/Instructions.h:3494
¶static bool classof(const llvm::Value* V)
static bool classof(const llvm::Value* V)
Declared at: llvm/include/llvm/IR/Instructions.h:3578
Parameters
- const llvm::Value* V
¶static bool classof(const llvm::Instruction* I)
static bool classof(const llvm::Instruction* I)
Declared at: llvm/include/llvm/IR/Instructions.h:3575
Parameters
- const llvm::Instruction* I
¶llvm::SwitchInst* cloneImpl() const
llvm::SwitchInst* cloneImpl() const
Declared at: llvm/include/llvm/IR/Instructions.h:3276
¶llvm::ConstantInt* findCaseDest(
llvm::BasicBlock* BB)
llvm::ConstantInt* findCaseDest(
llvm::BasicBlock* BB)
Description
Finds the unique case value for a given successor. Returns null if the successor is not found, not unique, or is the default case.
Declared at: llvm/include/llvm/IR/Instructions.h:3531
Parameters
- llvm::BasicBlock* BB
¶llvm::SwitchInst::CaseIt findCaseValue(
const llvm::ConstantInt* C)
llvm::SwitchInst::CaseIt findCaseValue(
const llvm::ConstantInt* C)
Description
Search all of the case values for the specified constant. If it is explicitly handled, return the case iterator of it, otherwise return default case iterator to indicate that it is handled by the default handler.
Declared at: llvm/include/llvm/IR/Instructions.h:3514
Parameters
- const llvm::ConstantInt* C
¶llvm::SwitchInst::ConstCaseIt findCaseValue(
const llvm::ConstantInt* C) const
llvm::SwitchInst::ConstCaseIt findCaseValue(
const llvm::ConstantInt* C) const
Declared at: llvm/include/llvm/IR/Instructions.h:3519
Parameters
- const llvm::ConstantInt* C
¶llvm::Value* getCondition() const
llvm::Value* getCondition() const
Declared at: llvm/include/llvm/IR/Instructions.h:3447
¶llvm::BasicBlock* getDefaultDest() const
llvm::BasicBlock* getDefaultDest() const
Declared at: llvm/include/llvm/IR/Instructions.h:3450
¶unsigned int getNumCases() const
unsigned int getNumCases() const
Description
Return the number of 'cases' in this switch instruction, excluding the default case.
Declared at: llvm/include/llvm/IR/Instructions.h:3460
¶unsigned int getNumSuccessors() const
unsigned int getNumSuccessors() const
Declared at: llvm/include/llvm/IR/Instructions.h:3564
¶llvm::BasicBlock* getSuccessor(
unsigned int idx) const
llvm::BasicBlock* getSuccessor(
unsigned int idx) const
Declared at: llvm/include/llvm/IR/Instructions.h:3565
Parameters
- unsigned int idx
¶void growOperands()
void growOperands()
Declared at: llvm/include/llvm/IR/Instructions.h:3270
¶void init(llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumReserved)
void init(llvm::Value* Value,
llvm::BasicBlock* Default,
unsigned int NumReserved)
Declared at: llvm/include/llvm/IR/Instructions.h:3269
Parameters
- llvm::Value* Value
- llvm::BasicBlock* Default
- unsigned int NumReserved
¶llvm::SwitchInst::CaseIt removeCase(
llvm::SwitchInst::CaseIt I)
llvm::SwitchInst::CaseIt removeCase(
llvm::SwitchInst::CaseIt I)
Description
This method removes the specified case and its successor from the switch instruction. Note that this operation may reorder the remaining cases at index idx and above. Note: This action invalidates iterators for all cases following the one removed, including the case_end() iterator. It returns an iterator for the next case.
Declared at: llvm/include/llvm/IR/Instructions.h:3562
Parameters
¶void setCondition(llvm::Value* V)
void setCondition(llvm::Value* V)
Declared at: llvm/include/llvm/IR/Instructions.h:3448
Parameters
- llvm::Value* V
¶void setDefaultDest(llvm::BasicBlock* DefaultCase)
void setDefaultDest(llvm::BasicBlock* DefaultCase)
Declared at: llvm/include/llvm/IR/Instructions.h:3454
Parameters
- llvm::BasicBlock* DefaultCase
¶void setSuccessor(unsigned int idx,
llvm::BasicBlock* NewSucc)
void setSuccessor(unsigned int idx,
llvm::BasicBlock* NewSucc)
Declared at: llvm/include/llvm/IR/Instructions.h:3569
Parameters
- unsigned int idx
- llvm::BasicBlock* NewSucc