temporary
nanofil also temp
A temporary is a function-local IR name, tmpN, holding one word of one class. Parameters, phis and instructions define temporaries; operands read them. Names are ground terms, compared only for equality: no logic variable appears in IR.
ir.pl's header ("Temps are ground names"); Syntax.v's value
Tmp. At run time Semantics.v's environmentenvmaps each temporary assigned so far to its word, as interp.pl's Env does; Term.v'slookupandputread and write it.Proofs (classes
aandf) are temporaries too, but never parameters, phis, call arguments or stored values.Named locals are a separate namespace: objects declared by
local_alloc, not temporaries.
The subtlety: a temporary may have more than one definition (ir:definitions_dominate/3 asks only that one dominate each use), so "the value of tmpN" depends on where you stand; the reuse rules follow only single definitions. Reading a temporary before it is assigned is Stuck in the model, an instantiation error in interp.pl.
Linked from
- Cfg.v: jump_succs
- Cycle.v: cycle_module
- Evidence.v: fact_holds
- ExternalMachine.v: arg_name
- ExternalMachine.v: external_env_other
- Maps.v: hash_bound
- Semantics.v: env
- Semantics.v: frame
- Semantics.v: inst_step
- Soundness.v: raw_tmp
- Symbolic.v: lookup_after_put
- Syntax.v: flight_arg
- Term.v: name
- Term.v: term
- Transport.v: dtmp
- Validate.v: inst_temp_defs
- Validate.v: value_temps
- Values.v: cap
- frame
- home
- name map
- proof
- word