LLVM 20.0.0git
|
#include "llvm/SandboxIR/SandboxIR.h"
Public Member Functions | |
SwitchInst (llvm::SwitchInst *SI, Context &Ctx) | |
Value * | getCondition () const |
void | setCondition (Value *V) |
BasicBlock * | getDefaultDest () const |
bool | defaultDestUndefined () const |
void | setDefaultDest (BasicBlock *DefaultCase) |
unsigned | getNumCases () const |
CaseIt | case_begin () |
Returns a read/write iterator that points to the first case in the SwitchInst. | |
ConstCaseIt | case_begin () const |
CaseIt | case_end () |
Returns a read/write iterator that points one past the last in the SwitchInst. | |
ConstCaseIt | case_end () const |
iterator_range< CaseIt > | cases () |
Iteration adapter for range-for loops. | |
iterator_range< ConstCaseIt > | cases () const |
CaseIt | case_default () |
ConstCaseIt | case_default () const |
CaseIt | findCaseValue (const ConstantInt *C) |
ConstCaseIt | findCaseValue (const ConstantInt *C) const |
ConstantInt * | findCaseDest (BasicBlock *BB) |
void | addCase (ConstantInt *OnVal, BasicBlock *Dest) |
CaseIt | removeCase (CaseIt It) |
This method removes the specified case and its successor from the switch instruction. | |
unsigned | getNumSuccessors () const |
BasicBlock * | getSuccessor (unsigned Idx) const |
void | setSuccessor (unsigned Idx, BasicBlock *NewSucc) |
Public Member Functions inherited from llvm::sandboxir::SingleLLVMInstructionImpl< llvm::SwitchInst > | |
unsigned | getUseOperandNo (const Use &Use) const final |
\Returns the operand index of Use . | |
unsigned | getNumOfIRInstrs () const final |
This is used by BasicBlock::iterator. | |
void | verify () const final |
Should crash if there is something wrong with the instruction. | |
void | dumpOS (raw_ostream &OS) const override |
Public Member Functions inherited from llvm::sandboxir::Instruction | |
virtual unsigned | getNumOfIRInstrs () const =0 |
This is used by BasicBlock::iterator. | |
BBIterator | getIterator () const |
\Returns a BasicBlock::iterator for this Instruction. | |
Instruction * | getNextNode () const |
\Returns the next sandboxir::Instruction in the block, or nullptr if at the end of the block. | |
Instruction * | getPrevNode () const |
\Returns the previous sandboxir::Instruction in the block, or nullptr if at the beginning of the block. | |
Opcode | getOpcode () const |
\Returns this Instruction's opcode. | |
void | removeFromParent () |
Detach this from its parent BasicBlock without deleting it. | |
void | eraseFromParent () |
Detach this Value from its parent and delete it. | |
void | insertBefore (Instruction *BeforeI) |
Insert this detached instruction before BeforeI . | |
void | insertAfter (Instruction *AfterI) |
Insert this detached instruction after AfterI . | |
void | insertInto (BasicBlock *BB, const BBIterator &WhereIt) |
Insert this detached instruction into BB at WhereIt . | |
void | moveBefore (BasicBlock &BB, const BBIterator &WhereIt) |
Move this instruction to WhereIt . | |
void | moveBefore (Instruction *Before) |
Move this instruction before Before . | |
void | moveAfter (Instruction *After) |
Move this instruction after After . | |
BasicBlock * | getParent () const |
\Returns the BasicBlock containing this Instruction, or null if it is detached. | |
bool | hasNoUnsignedWrap () const |
Determine whether the no signed wrap flag is set. | |
void | setHasNoUnsignedWrap (bool B=true) |
Set or clear the nuw flag on this instruction, which must be an operator which supports this flag. | |
bool | hasNoSignedWrap () const |
Determine whether the no signed wrap flag is set. | |
void | setHasNoSignedWrap (bool B=true) |
Set or clear the nsw flag on this instruction, which must be an operator which supports this flag. | |
bool | isFast () const |
Determine whether all fast-math-flags are set. | |
void | setFast (bool B) |
Set or clear all fast-math-flags on this instruction, which must be an operator which supports this flag. | |
bool | hasAllowReassoc () const |
Determine whether the allow-reassociation flag is set. | |
void | setHasAllowReassoc (bool B) |
Set or clear the reassociation flag on this instruction, which must be an operator which supports this flag. | |
bool | isExact () const |
Determine whether the exact flag is set. | |
void | setIsExact (bool B=true) |
Set or clear the exact flag on this instruction, which must be an operator which supports this flag. | |
bool | hasNoNaNs () const |
Determine whether the no-NaNs flag is set. | |
void | setHasNoNaNs (bool B) |
Set or clear the no-nans flag on this instruction, which must be an operator which supports this flag. | |
bool | hasNoInfs () const |
Determine whether the no-infs flag is set. | |
void | setHasNoInfs (bool B) |
Set or clear the no-infs flag on this instruction, which must be an operator which supports this flag. | |
bool | hasNoSignedZeros () const |
Determine whether the no-signed-zeros flag is set. | |
void | setHasNoSignedZeros (bool B) |
Set or clear the no-signed-zeros flag on this instruction, which must be an operator which supports this flag. | |
bool | hasAllowReciprocal () const |
Determine whether the allow-reciprocal flag is set. | |
void | setHasAllowReciprocal (bool B) |
Set or clear the allow-reciprocal flag on this instruction, which must be an operator which supports this flag. | |
bool | hasAllowContract () const |
Determine whether the allow-contract flag is set. | |
void | setHasAllowContract (bool B) |
Set or clear the allow-contract flag on this instruction, which must be an operator which supports this flag. | |
bool | hasApproxFunc () const |
Determine whether the approximate-math-functions flag is set. | |
void | setHasApproxFunc (bool B) |
Set or clear the approximate-math-functions flag on this instruction, which must be an operator which supports this flag. | |
FastMathFlags | getFastMathFlags () const |
Convenience function for getting all the fast-math flags, which must be an operator which supports these flags. | |
void | setFastMathFlags (FastMathFlags FMF) |
Convenience function for setting multiple fast-math flags on this instruction, which must be an operator which supports these flags. | |
void | copyFastMathFlags (FastMathFlags FMF) |
Convenience function for transferring all fast-math flag values to this instruction, which must be an operator which supports these flags. | |
void | dumpOS (raw_ostream &OS) const override |
Public Member Functions inherited from llvm::sandboxir::User | |
virtual op_iterator | op_begin () |
virtual op_iterator | op_end () |
virtual const_op_iterator | op_begin () const |
virtual const_op_iterator | op_end () const |
op_range | operands () |
const_op_range | operands () const |
Value * | getOperand (unsigned OpIdx) const |
Use | getOperandUse (unsigned OpIdx) const |
\Returns the operand edge for OpIdx . | |
virtual unsigned | getNumOperands () const |
virtual void | setOperand (unsigned OperandIdx, Value *Operand) |
bool | replaceUsesOfWith (Value *FromV, Value *ToV) |
Replaces any operands that match FromV with ToV . | |
void | verify () const override |
Should crash if there is something wrong with the instruction. | |
void | dumpCommonHeader (raw_ostream &OS) const final |
void | dumpOS (raw_ostream &OS) const override |
Public Member Functions inherited from llvm::sandboxir::Value | |
virtual | ~Value ()=default |
ClassID | getSubclassID () const |
use_iterator | use_begin () |
const_use_iterator | use_begin () const |
use_iterator | use_end () |
const_use_iterator | use_end () const |
iterator_range< use_iterator > | uses () |
iterator_range< const_use_iterator > | uses () const |
user_iterator | user_begin () |
user_iterator | user_end () |
const_user_iterator | user_begin () const |
const_user_iterator | user_end () const |
iterator_range< user_iterator > | users () |
iterator_range< const_user_iterator > | users () const |
unsigned | getNumUses () const |
\Returns the number of user edges (not necessarily to unique users). | |
bool | hasNUsesOrMore (unsigned Num) const |
Return true if this value has N uses or more. | |
bool | hasNUses (unsigned Num) const |
Return true if this Value has exactly N uses. | |
Type * | getType () const |
Context & | getContext () const |
void | replaceUsesWithIf (Value *OtherV, llvm::function_ref< bool(const Use &)> ShouldReplace) |
void | replaceAllUsesWith (Value *Other) |
StringRef | getName () const |
\Returns the LLVM IR name of the bottom-most LLVM value. | |
virtual void | verify () const =0 |
Should crash if there is something wrong with the instruction. | |
std::string | getUid () const |
Returns the unique id in the form 'SB<number>.' like 'SB1.'. | |
virtual void | dumpCommonHeader (raw_ostream &OS) const |
void | dumpCommonFooter (raw_ostream &OS) const |
void | dumpCommonPrefix (raw_ostream &OS) const |
void | dumpCommonSuffix (raw_ostream &OS) const |
void | printAsOperandCommon (raw_ostream &OS) const |
virtual void | dumpOS (raw_ostream &OS) const =0 |
LLVM_DUMP_METHOD void | dump () const |
Static Public Member Functions | |
static SwitchInst * | create (Value *V, BasicBlock *Dest, unsigned NumCases, BasicBlock::iterator WhereIt, BasicBlock *WhereBB, Context &Ctx, const Twine &Name="") |
static bool | classof (const Value *From) |
Static Public Member Functions inherited from llvm::sandboxir::Instruction | |
static const char * | getOpcodeName (Opcode Opc) |
static bool | classof (const sandboxir::Value *From) |
For isa/dyn_cast. | |
Static Public Member Functions inherited from llvm::sandboxir::User | |
static bool | classof (const Value *From) |
For isa/dyn_cast. | |
Static Public Attributes | |
static constexpr const unsigned | DefaultPseudoIndex |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::sandboxir::Instruction | |
Instruction (ClassID ID, Opcode Opc, llvm::Instruction *I, sandboxir::Context &SBCtx) | |
llvm::Instruction * | getTopmostLLVMInstruction () const |
A SandboxIR Instruction may map to multiple LLVM IR Instruction. | |
virtual SmallVector< llvm::Instruction *, 1 > | getLLVMInstrs () const =0 |
\Returns the LLVM IR Instructions that this SandboxIR maps to in program order. | |
Protected Member Functions inherited from llvm::sandboxir::User | |
User (ClassID ID, llvm::Value *V, Context &Ctx) | |
Use | getOperandUseDefault (unsigned OpIdx, bool Verify) const |
\Returns the Use edge that corresponds to OpIdx . | |
virtual Use | getOperandUseInternal (unsigned OpIdx, bool Verify) const =0 |
\Returns the Use for the OpIdx'th operand. | |
unsigned | getUseOperandNoDefault (const Use &Use) const |
The default implementation works only for single-LLVMIR-instruction Users and only if they match exactly the LLVM instruction. | |
virtual unsigned | getUseOperandNo (const Use &Use) const =0 |
\Returns the operand index of Use . | |
void | swapOperandsInternal (unsigned OpIdxA, unsigned OpIdxB) |
void | verifyUserOfLLVMUse (const llvm::Use &Use) const |
Protected Member Functions inherited from llvm::sandboxir::Value | |
void | clearValue () |
Value (ClassID SubclassID, llvm::Value *Val, Context &Ctx) | |
Value (const Value &)=delete | |
Disable copies. | |
Value & | operator= (const Value &)=delete |
Static Protected Member Functions inherited from llvm::sandboxir::Value | |
static const char * | getSubclassIDStr (ClassID ID) |
Protected Attributes inherited from llvm::sandboxir::Instruction | |
Opcode | Opc |
Protected Attributes inherited from llvm::sandboxir::Value | |
ClassID | SubclassID |
For isa/dyn_cast. | |
unsigned | UID |
A unique ID used for forming the name (used for debugging). | |
llvm::Value * | Val = nullptr |
The LLVM Value that corresponds to this SandboxIR Value. | |
Context & | Ctx |
All values point to the context. | |
Definition at line 1578 of file SandboxIR.h.
using llvm::sandboxir::SwitchInst::CaseHandle = llvm::SwitchInst::CaseHandleImpl<SwitchInst, ConstantInt, BasicBlock> |
Definition at line 1601 of file SandboxIR.h.
Definition at line 1606 of file SandboxIR.h.
using llvm::sandboxir::SwitchInst::ConstCaseHandle = llvm::SwitchInst::CaseHandleImpl<const SwitchInst, const ConstantInt, const BasicBlock> |
Definition at line 1603 of file SandboxIR.h.
using llvm::sandboxir::SwitchInst::ConstCaseIt = llvm::SwitchInst::CaseIteratorImpl<ConstCaseHandle> |
Definition at line 1607 of file SandboxIR.h.
|
inline |
Definition at line 1580 of file SandboxIR.h.
void SwitchInst::addCase | ( | ConstantInt * | OnVal, |
BasicBlock * | Dest | ||
) |
Definition at line 1328 of file SandboxIR.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Tracker::emplaceIfTracking(), llvm::sandboxir::Context::getTracker(), and llvm::sandboxir::Value::Val.
Referenced by llvm::sandboxir::SwitchRemoveCase::revert().
|
inline |
Returns a read/write iterator that points to the first case in the SwitchInst.
Definition at line 1611 of file SandboxIR.h.
Referenced by cases(), and removeCase().
|
inline |
Definition at line 1612 of file SandboxIR.h.
|
inline |
Definition at line 1624 of file SandboxIR.h.
References DefaultPseudoIndex.
Referenced by findCaseValue().
|
inline |
Definition at line 1625 of file SandboxIR.h.
References DefaultPseudoIndex.
|
inline |
Returns a read/write iterator that points one past the last in the SwitchInst.
Definition at line 1615 of file SandboxIR.h.
References getNumCases().
Referenced by cases(), and findCaseValue().
|
inline |
Definition at line 1616 of file SandboxIR.h.
References getNumCases().
|
inline |
Iteration adapter for range-for loops.
Definition at line 1618 of file SandboxIR.h.
References case_begin(), case_end(), and llvm::make_range().
Referenced by findCaseValue().
|
inline |
Definition at line 1621 of file SandboxIR.h.
References case_begin(), case_end(), and llvm::make_range().
Definition at line 1658 of file SandboxIR.h.
References From.
|
static |
Definition at line 1284 of file SandboxIR.cpp.
References llvm::IRBuilderBase::CreateSwitch(), llvm::sandboxir::Context::createSwitchInst(), llvm::sandboxir::Value::Ctx, llvm::sandboxir::BasicBlock::end(), llvm::sandboxir::Context::getLLVMIRBuilder(), LLVMSwitch, llvm::IRBuilderBase::SetInsertPoint(), and llvm::sandboxir::Value::Val.
|
inline |
Definition at line 1593 of file SandboxIR.h.
References llvm::sandboxir::Value::Val.
ConstantInt * SwitchInst::findCaseDest | ( | BasicBlock * | BB | ) |
Definition at line 1322 of file SandboxIR.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Context::getValue(), and llvm::sandboxir::Value::Val.
|
inline |
Definition at line 1628 of file SandboxIR.h.
References llvm::CallingConv::C, and findCaseValue().
Referenced by findCaseValue(), and llvm::sandboxir::SwitchAddCase::revert().
|
inline |
Definition at line 1633 of file SandboxIR.h.
References llvm::CallingConv::C, case_default(), case_end(), cases(), llvm::find_if(), llvm::SwitchInst::CaseHandleImpl< SwitchInstT, ConstantIntT, BasicBlockT >::getCaseValue(), and I.
Value * SwitchInst::getCondition | ( | ) | const |
Definition at line 1298 of file SandboxIR.cpp.
References llvm::sandboxir::Value::Ctx, getCondition(), llvm::sandboxir::Context::getValue(), and llvm::sandboxir::Value::Val.
Referenced by getCondition().
BasicBlock * SwitchInst::getDefaultDest | ( | ) | const |
Definition at line 1310 of file SandboxIR.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Context::getValue(), and llvm::sandboxir::Value::Val.
Referenced by setDefaultDest().
|
inline |
Definition at line 1597 of file SandboxIR.h.
References llvm::sandboxir::Value::Val.
Referenced by case_end().
|
inline |
Definition at line 1653 of file SandboxIR.h.
References llvm::sandboxir::Value::Val.
BasicBlock * SwitchInst::getSuccessor | ( | unsigned | Idx | ) | const |
Definition at line 1348 of file SandboxIR.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Context::getValue(), Idx, and llvm::sandboxir::Value::Val.
Referenced by setSuccessor().
SwitchInst::CaseIt SwitchInst::removeCase | ( | CaseIt | It | ) |
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.
Definition at line 1335 of file SandboxIR.cpp.
References case_begin(), llvm::sandboxir::Value::Ctx, llvm::sandboxir::Tracker::emplaceIfTracking(), llvm::sandboxir::Context::getTracker(), LLVMSwitch, and llvm::sandboxir::Value::Val.
Referenced by llvm::sandboxir::SwitchAddCase::revert().
void SwitchInst::setCondition | ( | Value * | V | ) |
Definition at line 1302 of file SandboxIR.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Tracker::emplaceIfTracking(), llvm::sandboxir::Context::getTracker(), and llvm::sandboxir::Value::Val.
void SwitchInst::setDefaultDest | ( | BasicBlock * | DefaultCase | ) |
Definition at line 1315 of file SandboxIR.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Tracker::emplaceIfTracking(), getDefaultDest(), llvm::sandboxir::Context::getTracker(), setDefaultDest(), and llvm::sandboxir::Value::Val.
Referenced by setDefaultDest().
void SwitchInst::setSuccessor | ( | unsigned | Idx, |
BasicBlock * | NewSucc | ||
) |
Definition at line 1353 of file SandboxIR.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Tracker::emplaceIfTracking(), getSuccessor(), llvm::sandboxir::Context::getTracker(), Idx, setSuccessor(), and llvm::sandboxir::Value::Val.
Referenced by setSuccessor().
Definition at line 1583 of file SandboxIR.h.
Referenced by case_default().