LLVM: llvm::sandboxir::User Class Reference (original) (raw)

A sandboxir::User has operands. More...

#include "[llvm/SandboxIR/User.h](SandboxIR%5F2User%5F8h%5Fsource.html)"

Public Types
using op_iterator = OperandUseIterator
using const_op_iterator = OperandUseIterator
using op_range = iterator_range<op_iterator>
using const_op_range = iterator_range<const_op_iterator>
Public Types inherited from llvm::sandboxir::Value
enum class ClassID : unsigned
using use_iterator = UserUseIterator
using const_use_iterator = UserUseIterator
using user_iterator = mapped_iterator<sandboxir::UserUseIterator, UseToUser>
using const_user_iterator = user_iterator
Public Member Functions
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
LLVM_ABI 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
LLVM_ABI 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
LLVM_ABI 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.
LLVM_ABI Type * getType () const
Context & getContext () const
LLVM_ABI void replaceUsesWithIf (Value *OtherV, llvm::function_ref< bool(const Use &)> ShouldReplace)
LLVM_ABI void replaceAllUsesWith (Value *Other)
StringRef getName () const
\Returns the LLVM IR name of the bottom-most LLVM value.
std::string getUid () const
Returns the unique id in the form 'SB.' like 'SB1.'.
void dumpCommonFooter (raw_ostream &OS) const
void dumpCommonPrefix (raw_ostream &OS) const
void dumpCommonSuffix (raw_ostream &OS) const
void printAsOperandCommon (raw_ostream &OS) const
LLVM_DUMP_METHOD void dump () const
Static Public Member Functions
static bool classof (const Value *From)
For isa/dyn_cast.
Protected Member Functions
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 ()
LLVM_ABI Value (ClassID SubclassID, llvm::Value *Val, Context &Ctx)
Value (const Value &)=delete
Disable copies.
Value & operator= (const Value &)=delete
Additional Inherited Members
Static Protected Member Functions inherited from llvm::sandboxir::Value
static const char * getSubclassIDStr (ClassID ID)
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.

A sandboxir::User has operands.

Definition at line 59 of file User.h.

const_op_iterator

const_op_range

op_iterator

op_range

classof()

dumpCommonHeader()

void llvm::sandboxir::User::dumpCommonHeader ( raw_ostream & OS) const finalvirtual

dumpOS()

void llvm::sandboxir::User::dumpOS ( raw_ostream & OS) const inlineoverridevirtual

getNumOperands()

virtual unsigned llvm::sandboxir::User::getNumOperands ( ) const inlinevirtual

getOperand()

Value * llvm::sandboxir::User::getOperand ( unsigned OpIdx) const inline

getOperandUse()

Use llvm::sandboxir::User::getOperandUse ( unsigned OpIdx) const inline

\Returns the operand edge for OpIdx.

NOTE: This should also work for OpIdx == getNumOperands(), which is used for op_end().

Definition at line 126 of file User.h.

References getOperandUseInternal(), OpIdx, and llvm::sandboxir::Value::Use.

Referenced by llvm::sandboxir::ShuffleVectorInst::commute(), llvm::sandboxir::CallBase::getArgOperandUse(), llvm::sandboxir::CallBase::getArgOperandUse(), llvm::User::getDescriptor(), getOperand(), setOperand(), swapOperandsInternal(), and llvm::sandboxir::SelectInst::swapValues().

getOperandUseDefault()

Use llvm::sandboxir::User::getOperandUseDefault ( unsigned OpIdx, bool Verify ) const protected

\Returns the Use edge that corresponds to OpIdx.

Note: This is the default implementation that works for instructions that match the underlying LLVM instruction. All others should use a different implementation.

Definition at line 58 of file User.cpp.

References assert(), llvm::cast(), llvm::sandboxir::Value::Ctx, getNumOperands(), llvm::isa(), OpIdx, llvm::sandboxir::Value::Use, User(), llvm::sandboxir::Value::Val, and Verify.

Referenced by llvm::sandboxir::Constant::getOperandUseInternal(), and llvm::sandboxir::GlobalObject::getOperandUseInternal().

getOperandUseInternal()

virtual Use llvm::sandboxir::User::getOperandUseInternal ( unsigned OpIdx, bool Verify ) const protectedpure virtual

getUseOperandNo()

virtual unsigned llvm::sandboxir::User::getUseOperandNo ( const Use & Use) const protectedpure virtual

\Returns the operand index of [Use](classllvm%5F1%5F1sandboxir%5F1%5F1Use.html "Represents a Def-use/Use-def edge in SandboxIR.").

Implemented in llvm::sandboxir::Constant, llvm::sandboxir::ConstantAggregateZero, llvm::sandboxir::ConstantFP, llvm::sandboxir::ConstantInt, llvm::sandboxir::ConstantPointerNull, llvm::sandboxir::ConstantTokenNone, llvm::sandboxir::DSOLocalEquivalent, llvm::sandboxir::GlobalObject, llvm::sandboxir::NoCFIValue, llvm::sandboxir::SingleLLVMInstructionImpl< LLVMT >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::AtomicCmpXchgInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::AtomicRMWInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::BinaryOperator >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::BranchInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::CallBase >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::CatchReturnInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::CatchSwitchInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::CleanupReturnInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::CmpInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::ExtractElementInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::FenceInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::FuncletPadInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::GetElementPtrInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::InsertElementInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::InsertValueInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::Instruction >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::LandingPadInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::PHINode >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::ResumeInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::ReturnInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::SelectInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::ShuffleVectorInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::StoreInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::SwitchInst >, llvm::sandboxir::SingleLLVMInstructionImpl< llvm::UnaryInstruction >, llvm::sandboxir::UndefValue, and llvm::sandboxir::UnreachableInst.

References llvm::sandboxir::Value::Use.

getUseOperandNoDefault()

unsigned llvm::sandboxir::User::getUseOperandNoDefault ( const Use & Use) const inlineprotected

op_begin() [1/2]

virtual op_iterator llvm::sandboxir::User::op_begin ( ) inlinevirtual

Definition at line 103 of file User.h.

References assert(), getOperandUseInternal(), llvm::isa(), and llvm::sandboxir::Value::Val.

Referenced by llvm::sandboxir::CallBase::arg_begin(), llvm::sandboxir::CallBase::arg_begin(), llvm::sandboxir::CallBase::data_operands_begin(), llvm::sandboxir::CallBase::data_operands_end(), llvm::sandboxir::CallBase::data_operands_end(), llvm::sandboxir::CatchSwitchInst::handler_begin(), llvm::sandboxir::CatchSwitchInst::handler_begin(), llvm::sandboxir::GetElementPtrInst::idx_begin(), op_begin(), operands(), and operands().

op_begin() [2/2]

virtual const_op_iterator llvm::sandboxir::User::op_begin ( ) const inlinevirtual

op_end() [1/2]

virtual op_iterator llvm::sandboxir::User::op_end ( ) inlinevirtual

op_end() [2/2]

virtual const_op_iterator llvm::sandboxir::User::op_end ( ) const inlinevirtual

operands() [1/2]

op_range llvm::sandboxir::User::operands ( ) inline

operands() [2/2]

const_op_range llvm::sandboxir::User::operands ( ) const inline

replaceUsesOfWith()

bool llvm::sandboxir::User::replaceUsesOfWith ( Value * FromV,
Value * ToV )

setOperand()

void llvm::sandboxir::User::setOperand ( unsigned OperandIdx, Value * Operand ) virtual

Definition at line 91 of file User.cpp.

References assert(), llvm::cast(), llvm::sandboxir::Value::Ctx, getOperandUse(), llvm::isa(), llvm::sandboxir::Value::Val, and llvm::sandboxir::Value::Value().

Referenced by llvm::sandboxir::CallBase::setArgOperand(), llvm::sandboxir::BranchInst::setCondition(), llvm::sandboxir::SelectInst::setCondition(), llvm::sandboxir::SelectInst::setFalseValue(), llvm::sandboxir::InvokeInst::setNormalDest(), llvm::sandboxir::BranchInst::setSuccessor(), llvm::sandboxir::CatchSwitchInst::setSuccessor(), llvm::sandboxir::SelectInst::setTrueValue(), and llvm::sandboxir::InvokeInst::setUnwindDest().

swapOperandsInternal()

void llvm::sandboxir::User::swapOperandsInternal ( unsigned OpIdxA, unsigned OpIdxB ) inlineprotected

verify()

void llvm::sandboxir::User::verify ( ) const inlineoverridevirtual

verifyUserOfLLVMUse()

void llvm::sandboxir::User::verifyUserOfLLVMUse ( const llvm::Use & Use) const protected

OperandUseIterator

Use::getOperandNo


The documentation for this class was generated from the following files: