pub enum Extra {
Show 17 variants
None,
Imm(Idx<Imm>),
Symbol(Symbol),
IntPred(IntPred),
FloatPred(FloatPred),
Mem(Idx<MemInfo>),
Rmw(RmwOp, Idx<MemInfo>),
Order(MemOrder),
Targets(BlockCallList),
Call(Idx<CallInfo>),
Switch(Idx<SwitchInfo>),
Asm(Idx<AsmInfo>),
VaObject(Idx<VaInfo>),
Class(StorageClass),
Owner(Owner),
Node(Meta),
Reason(Symbol),
}Expand description
Everything an instruction carries that is not a value operand.
Anything that fits in eight bytes is here and anything larger is an index into a side table, so that the common instructions, which are the arithmetic ones carrying nothing at all, do not pay for the rare ones.
Variants§
None
Nothing, which is most instructions.
Imm(Idx<Imm>)
A constant, for iconst, fconst and splat.
Symbol(Symbol)
A name, for global_addr and for a target-specific intrinsic.
IntPred(IntPred)
Which comparison, for icmp.
FloatPred(FloatPred)
Which comparison, for fcmp.
Mem(Idx<MemInfo>)
An access, for the loads, the stores, the copies and alloca.
Rmw(RmwOp, Idx<MemInfo>)
An atomic read-modify-write, which is an access and which operation.
Order(MemOrder)
A barrier’s ordering, for fence.
Targets(BlockCallList)
The targets of a branch, with the default first for a switch.
Call(Idx<CallInfo>)
A call.
Switch(Idx<SwitchInfo>)
A switch, which is targets and the values that select them.
Asm(Idx<AsmInfo>)
Inline assembly.
VaObject(Idx<VaInfo>)
An object read off a variable argument list, which is an access and how it travelled.
Class(StorageClass)
What kind of storage an instance is, for meta_begin.
Owner(Owner)
Who a range went to, for meta_transfer.
Node(Meta)
A metadata node, for meta_type, which is the one plane write that names a type.
Reason(Symbol)
Why an exemption was declared, for safe_region_begin.