#[non_exhaustive]pub enum LocalValueId {
Literal(LiteralId),
Bytes(BytesId),
Instruction(LocalInsnId),
BasicBlock(LocalBlockId),
BlockParam(LocalParamId),
Varnode(VarnodeId),
Temp(LocalTempId),
Function(FunctionId),
Poison(PoisonId),
}Expand description
The body-local twin of ValueId: the form an in-body operand holds once
storage is localized (stage 6a, ruling 2).
It mirrors ValueId variant-for-variant, but its arena arms
(Instruction/BasicBlock/BlockParam) carry a bare function-local index
(LocalInsnId/LocalBlockId/LocalParamId) with no owning FunctionId —
SSA is intra-function, so the owning function is the ambient body and does not
need re-storing on every operand. The shared/module arms
(Literal/Bytes/Varnode/Function) carry the exact same globally-interned
or module ids as ValueId (they are already the boundary currency).
The two forms convert through LocalValueId::qualify (stamp the ambient
func) and ValueId::localize (drop it, asserting it matched). ValueId
stays the qualified boundary currency (module tables, refs, consumer crates);
LocalValueId is confined to in-body storage.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Literal(LiteralId)
A compile-time integer constant (module-interned; same id as ValueId).
Bytes(BytesId)
A compile-time opaque byte blob (module-interned; same id as ValueId).
Instruction(LocalInsnId)
An SSA value produced by an Instruction — bare body-local index.
BasicBlock(LocalBlockId)
A control-flow node (BasicBlock) — bare body-local index.
BlockParam(LocalParamId)
A typed block-entry parameter — bare body-local index.
Varnode(VarnodeId)
A named memory location (Varnode) (module id; same as ValueId).
Temp(LocalTempId)
A body-owned temporary value — bare body-local index.
Function(FunctionId)
A lifted or external FunctionBody (module id; same as ValueId).
Poison(PoisonId)
A typed poison value (module-interned; same id as ValueId).
Implementations§
Source§impl LocalValueId
impl LocalValueId
Sourcepub fn qualify(self, func: FunctionId) -> ValueId
pub fn qualify(self, func: FunctionId) -> ValueId
Qualify a body-local id back into the boundary ValueId by stamping the
owning function func onto the arena arms. Shared/module arms pass through
unchanged.
Trait Implementations§
Source§impl Clone for LocalValueId
impl Clone for LocalValueId
Source§fn clone(&self) -> LocalValueId
fn clone(&self) -> LocalValueId
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more