diff --git a/.gitignore b/.gitignore
index 50c30ef5d..0bf6cce48 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@ __pycache__/
/deps/.stable-mir-json
/.vscode/
kmir/src/tests/integration/data/**/target
+tmp/
.DS_Store
proof/
-/result*
\ No newline at end of file
+/result*
diff --git a/kmir/src/kmir/kdist/mir-semantics/kmir.md b/kmir/src/kmir/kdist/mir-semantics/kmir.md
index 82c28b3f0..2744788bd 100644
--- a/kmir/src/kmir/kdist/mir-semantics/kmir.md
+++ b/kmir/src/kmir/kdist/mir-semantics/kmir.md
@@ -178,7 +178,7 @@ will be `129`.
// These rules preserve definedness because all the same subterms show up on each side except:
// - `branch(...)`, which is a constructor.
- // - `#switchMatch(...)`, which is a total function, but can't be marked total because the LLVM backend complains.
+ // - `#switchMatch(...)`, which is a total function.
rule #selectBlock(switchTargets(.Branches, BBIDX), _) => #execBlockIdx(BBIDX) ...
@@ -192,12 +192,13 @@ will be `129`.
andBool #switchCanUse(V)
[preserves-definedness]
- syntax Bool ::= #switchMatch ( MIRInt , Value ) [function]
+ syntax Bool ::= #switchMatch ( MIRInt , Value ) [function, total]
rule #switchMatch(0, BoolVal(B) ) => notBool B
rule #switchMatch(1, BoolVal(B) ) => B
rule #switchMatch(I, Integer(I2, WIDTH, _)) => I ==Int truncate(I2, WIDTH, Unsigned) requires 0 I ==Int I2
+ rule #switchMatch(_, _ ) => false [owise]
syntax Bool ::= #switchCanUse ( Value ) [function, total]
// ------------------------------------------------------
@@ -308,15 +309,18 @@ The call stack is not necessarily empty at this point so it is left untouched.
where the returned result should go.
```k
- syntax KItem ::= #execTerminatorCall(fty: Ty, func: MonoItemKind, args: Operands, destination: Place, target: MaybeBasicBlockIdx, unwind: UnwindAction, Span)
+ syntax KItem ::= #prepareTerminatorCall(fty: Ty, func: MonoItemKind, args: Operands, destination: Place, target: MaybeBasicBlockIdx, unwind: UnwindAction, Span)
+ | #execTerminatorCall(String, Body, originalArgs: Operands, callerLocals: List, args: KItem, fty: Ty, destination: Place, target: MaybeBasicBlockIdx, unwind: UnwindAction, Span) [strict(5)]
+ | #execTerminatorCall(functionName: String, args: List, body: Body, fty: Ty, destination: Place, target: MaybeBasicBlockIdx, unwind: UnwindAction, Span)
+ | #execIntrinsic(MonoItemKind, Operands, Place, Span)
rule #execTerminator(terminator(terminatorKindCall(operandConstant(constOperand(_, _, mirConst(constantKindZeroSized, Ty, _))), ARGS, DEST, TARGET, UNWIND), SPAN))
- => #execTerminatorCall(Ty, lookupFunction(Ty), ARGS, DEST, TARGET, UNWIND, SPAN)
+ => #prepareTerminatorCall(Ty, lookupFunction(Ty), ARGS, DEST, TARGET, UNWIND, SPAN)
...
rule #execTerminator(terminator(terminatorKindCall(operandMove(place(local(I), PROJS)), ARGS, DEST, TARGET, UNWIND), SPAN))
- => #execTerminatorCall({#projectedCallTy(I, PROJS, LOCALS)}:>Ty, lookupFunction({#projectedCallTy(I, PROJS, LOCALS)}:>Ty), ARGS, DEST, TARGET, UNWIND, SPAN)
+ => #prepareTerminatorCall({#projectedCallTy(I, PROJS, LOCALS)}:>Ty, lookupFunction({#projectedCallTy(I, PROJS, LOCALS)}:>Ty), ARGS, DEST, TARGET, UNWIND, SPAN)
...
LOCALS
@@ -333,9 +337,9 @@ where the returned result should go.
rule #projectedCallTy(_, _, _) => TyUnknown [owise]
- // Intrinsic function call - execute directly without state switching
+ // Dispatch resolved call targets before any body-specific preprocessing.
rule [termCallIntrinsic]:
- #execTerminatorCall(_, FUNC, ARGS, DEST, TARGET, _UNWIND, SPAN) ~> _
+ #prepareTerminatorCall(_FTY, FUNC, ARGS, DEST, TARGET, _UNWIND, SPAN) ~> _
=> #execIntrinsic(FUNC, ARGS, DEST, SPAN) ~> #continueAt(TARGET)
requires isIntrinsicFunction(FUNC)
@@ -343,49 +347,80 @@ where the returned result should go.
// Intrinsic function call to a function in the break-on set - same as termCallIntrinsic but separate rule id for cut-point
rule [termCallIntrinsicFilter]:
- #execTerminatorCall(_, FUNC, ARGS, DEST, TARGET, _UNWIND, SPAN) ~> _
+ #prepareTerminatorCall(_FTY, FUNC, ARGS, DEST, TARGET, _UNWIND, SPAN) ~> _
=> #execIntrinsic(FUNC, ARGS, DEST, SPAN) ~> #continueAt(TARGET)
requires isIntrinsicFunction(FUNC)
andBool #functionNameMatchesEnv(getFunctionName(FUNC))
- // Regular function call - full state switching and stack setup
+ // Non-intrinsic calls materialize their arguments while the caller frame is still current.
+ // Closure-shim tuple arguments are normalized before entering the callee, so
+ // the callee sees the argument values to assign to locals `_1`, `_2`, ...
+ rule #prepareTerminatorCall(FTY, monoItemFn(symbol(NAME), _, someBody(BODY)), ARGS, DEST, TARGET, UNWIND, SPAN)
+ => #execTerminatorCall(NAME, BODY, ARGS, LOCALS, #readOperands(ARGS), FTY, DEST, TARGET, UNWIND, SPAN)
+
+ LOCALS
+
+ rule #execTerminatorCall(NAME, BODY, ORIGINAL, CALLERLOCALS, VALS:List, FTY, DEST, TARGET, UNWIND, SPAN)
+ => #execTerminatorCall(NAME, #normalizeCallValues(BODY, ORIGINAL, VALS, CALLERLOCALS), BODY, FTY, DEST, TARGET, UNWIND, SPAN)
+ ...
+
+
+ // Regular function call - state switch into the callee after argument preprocessing is done.
rule [termCallFunction]:
- #execTerminatorCall(FTY, FUNC, ARGS, DEST, TARGET, UNWIND, SPAN) ~> _
- => #setUpCalleeData(FUNC, ARGS, SPAN)
+ #execTerminatorCall(
+ NAME,
+ ARGS,
+ body((FIRST:BasicBlock _) #as BLOCKS, NEWLOCALS, _, _, _SPREADARG, _),
+ FTY,
+ DEST,
+ TARGET,
+ UNWIND,
+ _SPAN
+ ) ~> _
+ => #execBlock(FIRST)
CALLER => FTY
- _
+ _ => toKList(BLOCKS)
OLDCALLER => CALLER
OLDDEST => DEST
OLDTARGET => TARGET
OLDUNWIND => UNWIND
- LOCALS
+ LOCALS => #initCallLocals(NEWLOCALS, ARGS)
STACK => ListItem(StackFrame(OLDCALLER, OLDDEST, OLDTARGET, OLDUNWIND, LOCALS)) STACK
- requires notBool isIntrinsicFunction(FUNC)
- andBool notBool #functionNameMatchesEnv(getFunctionName(FUNC))
+ requires size(ARGS) #execTerminatorCall(FTY, FUNC, ARGS, DEST, TARGET, UNWIND, SPAN) ~> _
- => #setUpCalleeData(FUNC, ARGS, SPAN)
+ #execTerminatorCall(
+ NAME,
+ ARGS,
+ body((FIRST:BasicBlock _) #as BLOCKS, NEWLOCALS, _, _, _SPREADARG, _),
+ FTY,
+ DEST,
+ TARGET,
+ UNWIND,
+ _SPAN
+ ) ~> _
+ => #execBlock(FIRST)
CALLER => FTY
- _
+ _ => toKList(BLOCKS)
OLDCALLER => CALLER
OLDDEST => DEST
OLDTARGET => TARGET
OLDUNWIND => UNWIND
- LOCALS
+ LOCALS => #initCallLocals(NEWLOCALS, ARGS)
STACK => ListItem(StackFrame(OLDCALLER, OLDDEST, OLDTARGET, OLDUNWIND, LOCALS)) STACK
- requires notBool isIntrinsicFunction(FUNC)
- andBool #functionNameMatchesEnv(getFunctionName(FUNC))
+ requires size(ARGS) true
rule isIntrinsicFunction(_) => false [owise]
@@ -436,37 +471,14 @@ where the returned result should go.
rule #continueAt(noBasicBlockIdx) => .K ...
```
-The local data has to be set up for the call, which requires information about the local variables of a call. This step is separate from the above call stack setup because it needs to retrieve the locals declaration from the body. Arguments to the call are `Operands` which refer to the old locals (`OLDLOCALS` below), and the data is either _copied_ into the new locals using `#setArgs`, or it needs to be _shared_ via references.
-
-An operand may be a `Reference` (the only way a function could access another function call's `local` variables). For this case, the stack height in the `Reference` must be incremented because a stack frame is added.
+The local data for the callee is initialized after the call operands have been evaluated in the caller frame.
+Arguments are stored as values in local `_1`, `_2`, ...
+If an argument contains a `Reference` or local pointer into the caller frame, its stack height is incremented because the caller frame is pushed onto the stack before the callee starts.
```k
- syntax KItem ::= #setUpCalleeData(MonoItemKind, Operands, Span)
-
- // reserve space for local variables and copy/move arguments from old locals into their place
- rule [setupCalleeData]: #setUpCalleeData(
- monoItemFn(_, _, someBody(body((FIRST:BasicBlock _) #as BLOCKS, NEWLOCALS, _, _, _, _))),
- ARGS,
- _SPAN
- )
- =>
- #setArgsFromStack(1, ARGS) ~> #execBlock(FIRST)
- ...
-
- // CALLEE
-
- _ => toKList(BLOCKS)
- // CALLER
- // DEST
- // TARGET
- // UNWIND
- _ => #reserveFor(NEWLOCALS)
- // assumption: arguments stored as _1 .. _n before actual "local" data
- ...
-
- // TODO: Haven't handled "noBody" case
-
syntax List ::= #reserveFor( LocalDecls ) [function, total]
+ | #initCallLocals(LocalDecls, List) [function, total]
+ | #initCallLocalsAux(Bool, LocalDecls, List) [function, total]
rule #reserveFor(.LocalDecls) => .List
@@ -474,162 +486,120 @@ An operand may be a `Reference` (the only way a function could access another fu
=>
ListItem(newLocal(TY, MUT)) #reserveFor(REST)
- syntax KItem ::= #setArgsFromStack ( Int, Operands)
- | #setArgFromStack ( Int, Operand)
- | #execIntrinsic ( MonoItemKind, Operands, Place, Span )
+ rule #initCallLocals(DECLS, ARGS) => #initCallLocalsAux(false, DECLS, ARGS)
- // once all arguments have been retrieved, execute
- rule #setArgsFromStack(_, .Operands) ~> CONT => CONT
+ rule #initCallLocalsAux(_, .LocalDecls, _ARGS) => .List
- // set arguments one by one, marking off moved operands in the provided (caller) LOCALS
- rule #setArgsFromStack(IDX, OP:Operand MORE:Operands) ~> CONT
- =>
- #setArgFromStack(IDX, OP) ~> #setArgsFromStack(IDX +Int 1, MORE) ~> CONT
-
+ rule #initCallLocalsAux(false, localDecl(TY, _, MUT) REST:LocalDecls, ARGS)
+ =>
+ ListItem(newLocal(TY, MUT)) #initCallLocalsAux(true, REST, ARGS)
- rule #setArgFromStack(IDX, operandConstant(_) #as CONSTOPERAND)
- =>
- #setLocalValue(place(local(IDX), .ProjectionElems), CONSTOPERAND)
- ...
-
+ rule #initCallLocalsAux(true, localDecl(TY, _, MUT) REST:LocalDecls, ListItem(VAL:Value) ARGREST:List)
+ =>
+ ListItem(typedValue(#incrementRef(VAL), TY, MUT)) #initCallLocalsAux(true, REST, ARGREST)
- rule #setArgFromStack(IDX, operandCopy(place(local(I), .ProjectionElems)))
- =>
- #setLocalValue(place(local(IDX), .ProjectionElems), #incrementRef(getValue(CALLERLOCALS, I)))
- ...
-
- ListItem(StackFrame(_, _, _, _, CALLERLOCALS)) _:List
- requires 0 <=Int I
- andBool I
+ ListItem(newLocal(TY, MUT)) #initCallLocalsAux(true, REST, ARGREST)
+ [owise]
- // TODO: This is not safe, need to add more checks to this.
- rule #setArgFromStack(IDX, operandMove(place(local(I), _)))
- =>
- #setLocalValue(place(local(IDX), .ProjectionElems), #incrementRef(getValue(CALLERLOCALS, I)))
- ...
-
- (ListItem(StackFrame(_, _, _, _, CALLERLOCALS) #as CALLERFRAME => #updateStackLocal(CALLERFRAME, I, Moved))) _:List
-
- requires 0 <=Int I
- andBool I
+ ListItem(newLocal(TY, MUT)) #initCallLocalsAux(true, REST, .List)
```
-For closures (like `|x,y| { things using x and y }`), a special calling convention is in effect:
-The first argument of the closure is its environment.
-Its type is currently not extracted (KMIR does not currently support variable-capturing) and it is not initialised.
-The second argument is a _tuple_ of all the arguments, however the function body expects these arguments as single locals.
+Some call shims pass tuple-packed arguments while the callee body expects the
+tuple fields as distinct locals.
+The caller-side operand traversal first materializes the original MIR arguments
+as values, then expands only the observed closure-shim shape into the flat
+callee argument list.
-Using this calling convention should be indicated by the `spread_arg` field in the function body.[^spread_arg]
-However, this field is usually `None` for _closures_, it is only set for internal functions of the Rust execution mechanism.
-Therefore a heuristics is used here:
-* The function has two arguments,
-* the 1st argument has an unknown type (or refers to one),
-* and the 2nd argument is a tuple.
+The `spread_arg` field identifies the local that stores a tuple-packed argument
+inside a Rust-call body.[^spread_arg]
+It is not by itself enough to decide that the incoming value should be flattened:
+some shims with `spread_arg` still project from that tuple local in the body.
[^spread_arg]: https://doc.rust-lang.org/beta/nightly-rustc/rustc_public/mir/body/struct.Body.html#structfield.spread_arg
```k
- // reserve space for local variables and copy/move arguments from a tuple inside the old locals into their place
- rule [setupCalleeClosure]: #setUpCalleeData(
- monoItemFn(_, _, someBody(body((FIRST:BasicBlock _) #as BLOCKS, NEWLOCALS, _, _, _, _))),
- operandMove(place(local(CLOSURE:Int), .ProjectionElems))
- operandMove(place(local(TUPLE), .ProjectionElems))
- .Operands,
- _SPAN
- )
- =>
- #setTupleArgs(2, getValue(LOCALS, TUPLE)) ~> #execBlock(FIRST)
- // arguments are tuple components, stored as _2 .. _n
- ...
-
-
- _ => toKList(BLOCKS)
- LOCALS => #reserveFor(NEWLOCALS)
-
- (ListItem(CALLERFRAME => #updateStackLocal(#updateStackLocal(CALLERFRAME, TUPLE, Moved), CLOSURE, Moved)))
- _:List
-
- ...
-
- requires 0 <=Int CLOSURE andBool CLOSURE TypedLocal)))
- andBool isTypedLocal(LOCALS[CLOSURE])
- andBool (
- typeInfoVoidType ==K lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal))
- orBool isFunType(lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal)))
- )
- [priority(40), preserves-definedness]
-
- rule [setupCalleeClosure2]: #setUpCalleeData(
- monoItemFn(_, _, someBody(body((FIRST:BasicBlock _) #as BLOCKS, NEWLOCALS, _, _, _, _))),
- operandMove(place(local(CLOSURE:Int), .ProjectionElems))
- operandMove(place(local(TUPLE), .ProjectionElems))
- .Operands,
- _SPAN
- )
- =>
- #setLocalValue(place(local(1), .ProjectionElems), #incrementRef(getValue(LOCALS, CLOSURE)))
- ~> #setTupleArgs(2, getValue(LOCALS, TUPLE)) ~> #execBlock(FIRST)
- // arguments are tuple components, stored as _2 .. _n
- ...
-
-
- _ => toKList(BLOCKS)
- LOCALS => #reserveFor(NEWLOCALS)
-
- (ListItem(CALLERFRAME => #updateStackLocal(#updateStackLocal(CALLERFRAME, TUPLE, Moved), CLOSURE, Moved)))
- _:List
-
- ...
-
- requires 0 <=Int CLOSURE andBool CLOSURE TypedLocal)))
- andBool isTypedLocal(LOCALS[CLOSURE])
- // or the closure ref type pointee is missing from the type table
- andBool isRefType(lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal)))
- andBool isTy(pointeeTy(lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal))))
- andBool (
- lookupTy({pointeeTy(lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal)))}:>Ty) ==K typeInfoVoidType
- orBool isFunType(lookupTy({pointeeTy(lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal)))}:>Ty))
- )
- [priority(45), preserves-definedness]
-
- syntax Bool ::= isTupleType ( TypeInfo ) [function, total]
- | isRefType ( TypeInfo ) [function, total]
- | isFunType ( TypeInfo ) [function, total]
- // -------------------------------------------------------
- rule isTupleType(typeInfoTupleType(_, _)) => true
- rule isTupleType( _ ) => false [owise]
- rule isRefType(typeInfoRefType(_)) => true
- rule isRefType( _ ) => false [owise]
- rule isFunType(typeInfoFunType(_)) => true
- rule isFunType( _ ) => false [owise]
-
- syntax KItem ::= #setTupleArgs ( Int , Value )
- | #setTupleArgs ( Int , List )
-
- // unpack tuple and set arguments individually
- rule #setTupleArgs(IDX, Aggregate(variantIdx(0), ARGS)) => #setTupleArgs(IDX, ARGS) ...
-
- rule #setTupleArgs(IDX, VAL:Value)
- => #setTupleArgs(IDX, ListItem(VAL))
- ...
- [owise]
+ syntax KItem ::= "#skipCallArg"
+
+ syntax List ::= #normalizeCallValues(Body, Operands, List, List) [function, total]
+ | #spreadArgValues(Value) [function, total]
+ syntax Bool ::= #isTupleArg(List, Int) [function, total]
+ | #isTupleType(TypeInfo) [function, total]
+ | #isClosureReceiverDirect(List, Int) [function, total]
+ | #isClosureReceiverRef(List, Int) [function, total]
+ | #isClosureReceiverType(TypeInfo) [function, total]
+ | #isClosureReceiverRefType(TypeInfo) [function, total]
+
+ // Closure shims without a StableMIR `spread_arg` pass a receiver plus a tuple,
+ // but the callee body expects the tuple fields as locals. This preserves the
+ // old caller-type heuristic while keeping argument materialization outside the
+ // callee frame.
+ rule #normalizeCallValues(
+ body(_, _, _, _, noLocal, _),
+ operandMove(place(local(CLOSURE), .ProjectionElems))
+ operandMove(place(local(TUPLE), .ProjectionElems))
+ .Operands,
+ ListItem(_CLOSUREVAL) ListItem(TUPLEVAL:Value) .List,
+ CALLERLOCALS
+ )
+ => ListItem(#skipCallArg) #spreadArgValues(TUPLEVAL)
+ requires #isTupleArg(CALLERLOCALS, TUPLE)
+ andBool #isClosureReceiverDirect(CALLERLOCALS, CLOSURE)
+
+ rule #normalizeCallValues(
+ body(_, _, _, _, noLocal, _),
+ operandMove(place(local(CLOSURE), .ProjectionElems))
+ operandMove(place(local(TUPLE), .ProjectionElems))
+ .Operands,
+ ListItem(CLOSUREVAL:Value) ListItem(TUPLEVAL:Value) .List,
+ CALLERLOCALS
+ )
+ => ListItem(CLOSUREVAL) #spreadArgValues(TUPLEVAL)
+ requires #isTupleArg(CALLERLOCALS, TUPLE)
+ andBool #isClosureReceiverRef(CALLERLOCALS, CLOSURE)
+
+ rule #normalizeCallValues(_BODY, _ORIGINAL, VALS, _CALLERLOCALS) => VALS [owise]
+
+ rule #spreadArgValues(Aggregate(variantIdx(0), ARGS)) => ARGS
+ rule #spreadArgValues(VAL:Value) => ListItem(VAL) [owise]
+
+ rule #isTupleArg(LOCALS, I)
+ => #isTupleType(lookupTy(tyOfLocal({LOCALS[I]}:>TypedLocal)))
+ requires 0 <=Int I
+ andBool I false [owise]
- rule #setTupleArgs(_, .List ) => .K ...
+ rule #isTupleType(typeInfoTupleType(_, _)) => true
+ rule #isTupleType(_) => false [owise]
- rule #setTupleArgs(IDX, ListItem(VAL) REST:List)
- => #setLocalValue(place(local(IDX), .ProjectionElems), #incrementRef(VAL)) ~> #setTupleArgs(IDX +Int 1, REST)
- ...
-
+ rule #isClosureReceiverDirect(LOCALS, I)
+ => #isClosureReceiverType(lookupTy(tyOfLocal({LOCALS[I]}:>TypedLocal)))
+ requires 0 <=Int I
+ andBool I false [owise]
+
+ rule #isClosureReceiverRef(LOCALS, I)
+ => #isClosureReceiverRefType(lookupTy(tyOfLocal({LOCALS[I]}:>TypedLocal)))
+ requires 0 <=Int I
+ andBool I false [owise]
+
+ rule #isClosureReceiverType(typeInfoVoidType) => true
+ rule #isClosureReceiverType(typeInfoFunType(_)) => true
+ rule #isClosureReceiverType(_) => false [owise]
+
+ rule #isClosureReceiverRefType(typeInfoRefType(TY)) => #isClosureReceiverType(lookupTy(TY))
+ rule #isClosureReceiverRefType(_) => false [owise]
```
diff --git a/kmir/src/kmir/kdist/mir-semantics/rt/data.md b/kmir/src/kmir/kdist/mir-semantics/rt/data.md
index 2cc068084..9160edc2a 100644
--- a/kmir/src/kmir/kdist/mir-semantics/rt/data.md
+++ b/kmir/src/kmir/kdist/mir-semantics/rt/data.md
@@ -1050,6 +1050,8 @@ Literal arrays are also built using this RValue.
// #readOperands accumulates a list of `TypedLocal` values from operands
+ syntax KResult ::= List
+
syntax KItem ::= #readOperands ( Operands )
| #readOperandsAux( List , Operands )
| #readOn( List, Operands )
diff --git a/kmir/src/kmir/testing/fixtures.py b/kmir/src/kmir/testing/fixtures.py
index d42bf606d..dfb8e0a19 100644
--- a/kmir/src/kmir/testing/fixtures.py
+++ b/kmir/src/kmir/testing/fixtures.py
@@ -20,14 +20,16 @@ def pytest_configure(config) -> None:
sys.setrecursionlimit(1000000)
-def _normalize_symbol_hashes(text: str) -> str:
- """Normalize rustc symbol hash suffixes that drift across builds/environments."""
+def _normalize_unstable_snapshot_values(text: str) -> str:
+ """Normalize values in proof snapshots that drift across builds/environments."""
# Normalize mangled symbol hashes, including generic names with `$` and `.`.
# Keep trailing `E` when present; truncated variants may omit it.
text = re.sub(r'(_ZN[0-9A-Za-z_$.]+17h)[0-9a-fA-F]+E', r'\1E', text)
text = re.sub(r'(_ZN[0-9A-Za-z_$.]+17h)[0-9a-fA-F]+', r'\1', text)
# Normalize demangled hash suffixes (`...::h`).
text = re.sub(r'(::h)[0-9a-fA-F]{8,}', r'\1', text)
+ # Normalize call target type identifiers that can shift when linked crate metadata changes.
+ text = re.sub(r'(#prepareTerminatorCall \( ty \( )\d+( \) ,)', r'\1\2', text)
return text
@@ -37,14 +39,13 @@ def assert_or_update_show_output(
if path_replacements:
for old, new in path_replacements.items():
actual_text = actual_text.replace(old, new)
- # Normalize rustc symbol hash suffixes that can drift across builds/environments.
- actual_text = _normalize_symbol_hashes(actual_text)
+ actual_text = _normalize_unstable_snapshot_values(actual_text)
if update:
expected_file.write_text(actual_text)
else:
assert expected_file.is_file()
expected_text = expected_file.read_text()
- expected_text = _normalize_symbol_hashes(expected_text)
+ expected_text = _normalize_unstable_snapshot_values(expected_text)
if actual_text != expected_text:
diff = '\n'.join(
unified_diff(
diff --git a/kmir/src/kmir/utils.py b/kmir/src/kmir/utils.py
index 8feb00ca5..37577cffc 100644
--- a/kmir/src/kmir/utils.py
+++ b/kmir/src/kmir/utils.py
@@ -289,21 +289,22 @@ def _extract_alloc_id(operands: KInner) -> int | None:
def _annotate_nobody_function(k_cell: KInner, smir_info: SMIRInfo) -> list[str]:
- """If the k cell is `#setUpCalleeData` for a `noBody` callee, return annotation lines with decoded info."""
+ """If the k cell is a pending call to a `noBody` callee, return annotation lines with decoded info."""
from .alloc import Allocation, AllocId, AllocInfo, Memory
from .linker import _demangle
- setup_call_label = '#setUpCalleeData(_,_,_)_KMIR-CONTROL-FLOW_KItem_MonoItemKind_Operands_Span'
+ prepare_call_label = '#prepareTerminatorCall(_,_,_,_,_,_,_)_KMIR-CONTROL-FLOW_KItem_Ty_MonoItemKind_Operands_Place_MaybeBasicBlockIdx_UnwindAction_Span'
annotations: list[str] = []
match k_cell:
case KSequence(items=(KApply(label=KLabel(name=label_name), args=args), *_)) | KApply(
label=KLabel(name=label_name), args=args
- ) if (label_name == setup_call_label):
+ ) if (label_name == prepare_call_label):
match args:
case [
+ _,
KApply(
label=KLabel(name='MonoItemKind::MonoItemFn'),
args=[
@@ -313,6 +314,9 @@ def _annotate_nobody_function(k_cell: KInner, smir_info: SMIRInfo) -> list[str]:
],
),
operands,
+ _,
+ _,
+ _,
KApply(label=KLabel(name='span'), args=[KToken(token=span_str)]),
]:
def_id = int(def_id_str)
diff --git a/kmir/src/tests/integration/data/crate-tests/single-bin/single_exe::a_module::twice.expected b/kmir/src/tests/integration/data/crate-tests/single-bin/single_exe::a_module::twice.expected
index 2609e8676..b2bb9da8b 100644
--- a/kmir/src/tests/integration/data/crate-tests/single-bin/single_exe::a_module::twice.expected
+++ b/kmir/src/tests/integration/data/crate-tests/single-bin/single_exe::a_module::twice.expected
@@ -2,7 +2,7 @@
┌─ 1 (root, init)
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│
-│ (44 steps)
+│ (55 steps)
├─ 3 (split)
│ #expect ( BoolVal ( notBool ARG_UINT1:Int +Int ARG_UINT1:Int &Int 18446744073709
┃
diff --git a/kmir/src/tests/integration/data/crate-tests/single-bin/single_exe::main.expected b/kmir/src/tests/integration/data/crate-tests/single-bin/single_exe::main.expected
index 3edeb4f48..5d189cdb6 100644
--- a/kmir/src/tests/integration/data/crate-tests/single-bin/single_exe::main.expected
+++ b/kmir/src/tests/integration/data/crate-tests/single-bin/single_exe::main.expected
@@ -2,7 +2,7 @@
┌─ 1 (root, init)
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│
-│ (228 steps)
+│ (243 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│
diff --git a/kmir/src/tests/integration/data/crate-tests/single-dylib/small_test_dylib::add.expected b/kmir/src/tests/integration/data/crate-tests/single-dylib/small_test_dylib::add.expected
index 76fa2d153..6cc6145e9 100644
--- a/kmir/src/tests/integration/data/crate-tests/single-dylib/small_test_dylib::add.expected
+++ b/kmir/src/tests/integration/data/crate-tests/single-dylib/small_test_dylib::add.expected
@@ -2,7 +2,7 @@
┌─ 1 (root, init)
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│
-│ (35 steps)
+│ (41 steps)
├─ 3 (split)
│ #expect ( BoolVal ( notBool ARG_UINT1:Int +Int ARG_UINT2:Int &Int 18446744073709
┃
diff --git a/kmir/src/tests/integration/data/crate-tests/single-lib/small_test_lib::testing::test_add_in_range.expected b/kmir/src/tests/integration/data/crate-tests/single-lib/small_test_lib::testing::test_add_in_range.expected
index 3cb67eec2..8e494f588 100644
--- a/kmir/src/tests/integration/data/crate-tests/single-lib/small_test_lib::testing::test_add_in_range.expected
+++ b/kmir/src/tests/integration/data/crate-tests/single-lib/small_test_lib::testing::test_add_in_range.expected
@@ -2,7 +2,7 @@
┌─ 1 (root, init)
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│
-│ (114 steps)
+│ (127 steps)
├─ 3 (split)
│ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 1 ) )
┃
@@ -14,9 +14,9 @@
┃ ├─ 4
┃ │ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 1 ) )
┃ │
-┃ │ (6 steps)
+┃ │ (5 steps)
┃ └─ 6 (stuck, leaf)
-┃ #setUpCalleeData ( monoItemFn ( ... name: symbol ( "_ZN3std7process4exit17h
+┃ #prepareTerminatorCall ( ty ( ) , monoItemFn ( ... name: symbol ( "_ZN3std7pr
┃
┗━━┓ subst: .Subst
┃ constraint:
@@ -25,7 +25,7 @@
├─ 5
│ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 1 ) )
│
- │ (182 steps)
+ │ (188 steps)
├─ 7 (terminal)
│ #EndProgram ~> .K
│
diff --git a/kmir/src/tests/integration/data/crate-tests/two-crate-bin/crate2::main.expected b/kmir/src/tests/integration/data/crate-tests/two-crate-bin/crate2::main.expected
index 544958705..427c04da6 100644
--- a/kmir/src/tests/integration/data/crate-tests/two-crate-bin/crate2::main.expected
+++ b/kmir/src/tests/integration/data/crate-tests/two-crate-bin/crate2::main.expected
@@ -2,7 +2,7 @@
┌─ 1 (root, init)
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│
-│ (737 steps)
+│ (800 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│
diff --git a/kmir/src/tests/integration/data/crate-tests/two-crate-dylib/crate2::test_crate1_with.expected b/kmir/src/tests/integration/data/crate-tests/two-crate-dylib/crate2::test_crate1_with.expected
index bd3076868..c0931f01b 100644
--- a/kmir/src/tests/integration/data/crate-tests/two-crate-dylib/crate2::test_crate1_with.expected
+++ b/kmir/src/tests/integration/data/crate-tests/two-crate-dylib/crate2::test_crate1_with.expected
@@ -2,7 +2,7 @@
┌─ 1 (root, init)
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│
-│ (216 steps)
+│ (239 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│
diff --git a/kmir/src/tests/integration/data/exec-smir/call-with-args/closure-call.state b/kmir/src/tests/integration/data/exec-smir/call-with-args/closure-call.state
index db13358c2..fba0b8ca8 100644
--- a/kmir/src/tests/integration/data/exec-smir/call-with-args/closure-call.state
+++ b/kmir/src/tests/integration/data/exec-smir/call-with-args/closure-call.state
@@ -34,15 +34,14 @@
ListItem ( typedValue ( Integer ( 32 , 32 , false ) , ty ( 25 ) , mutabilityNot ) )
ListItem ( typedValue ( thunk ( #decodeConstant ( constantKindZeroSized , ty ( 30 ) , typeInfoVoidType ) ) , ty ( 30 ) , mutabilityNot ) )
ListItem ( typedValue ( Integer ( 32 , 32 , false ) , ty ( 25 ) , mutabilityNot ) )
- ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 31 ) , mutabilityMut ) )
- ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 32 , 32 , false ) ) ) , ty ( 26 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Moved , ty ( 31 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Moved , ty ( 26 ) , mutabilityMut ) )
ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 32 , 32 , false ) )
ListItem ( Integer ( 32 , 32 , false ) ) ) , ty ( 32 ) , mutabilityNot ) )
ListItem ( typedValue ( thunk ( #decodeConstant ( constantKindZeroSized , ty ( 33 ) , typeInfoVoidType ) ) , ty ( 33 ) , mutabilityNot ) )
ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) )
- ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 9 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 34 ) , mutabilityMut ) )
- ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 32 , 32 , false ) )
- ListItem ( Integer ( 32 , 32 , false ) ) ) , ty ( 32 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Moved , ty ( 34 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Moved , ty ( 32 ) , mutabilityMut ) )
diff --git a/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.state b/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.state
index 056091d15..f5f2b9ef5 100644
--- a/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.state
+++ b/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.state
@@ -1,19 +1,21 @@
- #execBlock ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) ) ~> .K
+ operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 2 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 12 ) ) ) ) ~> #readOn ( ListItem ( Integer ( 10 , 64 , false ) ) , .Operands ) ~> #freezer#execTerminatorCall(_,_,_,_,_,_,_,_,_,_)_KMIR-CONTROL-FLOW_KItem_String_Body_Operands_List_KItem_Ty_Place_MaybeBasicBlockIdx_UnwindAction_Span4_ ( "b" ~> .K , body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 66 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "_s" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "_t" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) ~> .K , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 2 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 12 ) ) ) ) .Operands ~> .K , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) ~> .K , ty ( 27 ) ~> .K , place (... local: local ( 0 ) , projection: .ProjectionElems ) ~> .K , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) ~> .K , unwindActionContinue ~> .K , span ( 58 ) ~> .K ) ~> .K
noReturn
- ty ( 27 )
+ ty ( 25 )
- ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) )
+ ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 2 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 58 ) ) ) )
+ ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 59 ) ) ) )
- ty ( 25 )
+ ty ( -1 )
place (... local: local ( 0 ) , projection: .ProjectionElems )
@@ -27,12 +29,9 @@
ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) )
ListItem ( typedValue ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) )
- ListItem ( typedValue ( Integer ( 11 , 16 , true ) , ty ( 28 ) , mutabilityNot ) )
- ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) )
- ListItem ( typedValue ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) ) )
ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) )
ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , .List ) )
diff --git a/kmir/src/tests/integration/data/exec-smir/enum/enum.state b/kmir/src/tests/integration/data/exec-smir/enum/enum.state
index 16e4c197d..865f6eec6 100644
--- a/kmir/src/tests/integration/data/exec-smir/enum/enum.state
+++ b/kmir/src/tests/integration/data/exec-smir/enum/enum.state
@@ -1,6 +1,6 @@
- #selectBlock ( switchTargets (... branches: branch ( 89 , basicBlockIdx ( 7 ) ) branch ( 90 , basicBlockIdx ( 6 ) ) .Branches , otherwise: basicBlockIdx ( 5 ) ) , operandMove ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) ) ~> .K
+ Integer ( 9090 , 0 , false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 89 , basicBlockIdx ( 7 ) ) branch ( 90 , basicBlockIdx ( 6 ) ) .Branches , otherwise: basicBlockIdx ( 5 ) ) ) , span: span ( 69 ) ) ) ~> .K
noReturn
@@ -47,7 +47,7 @@
ListItem ( newLocal ( ty ( 16 ) , mutabilityNot ) )
ListItem ( newLocal ( ty ( 28 ) , mutabilityNot ) )
ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) )
- ListItem ( typedValue ( Integer ( 9090 , 0 , false ) , ty ( 29 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 29 ) , mutabilityMut ) )
ListItem ( newLocal ( ty ( 26 ) , mutabilityNot ) )
ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) )
diff --git a/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.state b/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.state
index a8b20314b..27c6adefe 100644
--- a/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.state
+++ b/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.state
@@ -1,19 +1,20 @@
- #execTerminator ( terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) ~> .K
+ #readOperandsAux ( .List , .Operands ) ~> #freezer#execTerminatorCall(_,_,_,_,_,_,_,_,_,_)_KMIR-CONTROL-FLOW_KItem_String_Body_Operands_List_KItem_Ty_Place_MaybeBasicBlockIdx_UnwindAction_Span4_ ( "b" ~> .K , body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 62 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 63 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 64 ) ) ~> .K , .Operands ~> .K , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ~> .K , ty ( 26 ) ~> .K , place (... local: local ( 0 ) , projection: .ProjectionElems ) ~> .K , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) ~> .K , unwindActionContinue ~> .K , span ( 56 ) ~> .K ) ~> .K
noReturn
- ty ( 27 )
+ ty ( 25 )
- ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) )
+ ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 10 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) )
+ ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 57 ) ) ) )
- ty ( 26 )
+ ty ( -1 )
place (... local: local ( 0 ) , projection: .ProjectionElems )
@@ -29,8 +30,6 @@
- ListItem ( StackFrame ( ty ( 25 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) )
- ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) )
ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) )
ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , .List ) )
diff --git a/kmir/src/tests/integration/data/exec-smir/pointers/pointer-cast-zst.state b/kmir/src/tests/integration/data/exec-smir/pointers/pointer-cast-zst.state
index 691092911..abb7422af 100644
--- a/kmir/src/tests/integration/data/exec-smir/pointers/pointer-cast-zst.state
+++ b/kmir/src/tests/integration/data/exec-smir/pointers/pointer-cast-zst.state
@@ -1,50 +1,42 @@
- PtrLocal ( 1 , place (... local: local ( 1 ) , projection: projectionElemToZST .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , noMetadataSize ) ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPtrToPtr , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPtrToPtr , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindTransmute , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 27 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueNullaryOp ( nullOpAlignOf , ty ( 28 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpBitAnd , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 50 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: assert (... cond: operandCopy ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , expected: true , msg: assertMessageMisalignedPointerDereference (... required: operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , found: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionUnreachable ) , span: span ( 50 ) ) ) ~> .K
+ #execTerminatorCall ( "roundtrip" , ListItem ( PtrLocal ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , noMetadataSize ) ) ) , body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPtrToPtr , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 51 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPtrToPtr , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPtrToPtr , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindTransmute , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 27 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueNullaryOp ( nullOpAlignOf , ty ( 28 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpBitAnd , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 50 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandCopy ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , expected: true , msg: assertMessageMisalignedPointerDereference (... required: operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , found: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionUnreachable ) , span: span ( 50 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 3 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) ) , span: span ( 50 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 53 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 29 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 55 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 56 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 57 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 50 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "ptr" ) , sourceInfo: sourceInfo (... span: span ( 55 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "erased" ) , sourceInfo: sourceInfo (... span: span ( 56 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "restored" ) , sourceInfo: sourceInfo (... span: span ( 57 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 58 ) ) , ty ( 31 ) , place (... local: local ( 2 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , span ( 60 ) ) ~> .K
noReturn
- ty ( 31 )
+ ty ( -1 )
- ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPtrToPtr , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 51 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPtrToPtr , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPtrToPtr , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindTransmute , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 27 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueNullaryOp ( nullOpAlignOf , ty ( 28 ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpBitAnd , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 50 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 50 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandCopy ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , expected: true , msg: assertMessageMisalignedPointerDereference (... required: operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , found: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionUnreachable ) , span: span ( 50 ) ) ) )
- ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 3 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) ) , span: span ( 50 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 53 ) ) ) )
+ ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 8 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\xbe\xba\xfe\xca" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 29 ) , id: mirConstId ( 12 ) ) ) ) .Operands ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 63 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueAddressOf ( mutabilityNot , place (... local: local ( 4 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 63 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 59 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 11 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 60 ) ) ) )
+ ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 3405691582 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 3 ) ) ) , span: span ( 64 ) ) ) )
+ ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) )
+ ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 66 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 32 ) , id: mirConstId ( 13 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... offset: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 33 ) , id: mirConstId ( 14 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 66 ) ) ) )
ty ( -1 )
- place (... local: local ( 2 ) , projection: .ProjectionElems )
+ place (... local: local ( 0 ) , projection: .ProjectionElems )
- someBasicBlockIdx ( basicBlockIdx ( 1 ) )
+ noBasicBlockIdx
unwindActionContinue
+ ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 3405691582 , 32 , false ) ) ) , ty ( 28 ) , mutabilityNot ) )
ListItem ( newLocal ( ty ( 29 ) , mutabilityMut ) )
- ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 26 ) , mutabilityNot ) )
- ListItem ( newLocal ( ty ( 25 ) , mutabilityNot ) )
- ListItem ( newLocal ( ty ( 26 ) , mutabilityNot ) )
- ListItem ( newLocal ( ty ( 25 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 30 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Moved , ty ( 26 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 34 ) , mutabilityNot ) )
+ ListItem ( newLocal ( ty ( 35 ) , mutabilityMut ) )
- ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) )
- ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 3405691582 , 32 , false ) ) ) , ty ( 28 ) , mutabilityNot ) )
- ListItem ( newLocal ( ty ( 29 ) , mutabilityMut ) )
- ListItem ( typedValue ( Moved , ty ( 26 ) , mutabilityMut ) )
- ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 34 ) , mutabilityNot ) )
- ListItem ( newLocal ( ty ( 35 ) , mutabilityMut ) ) ) )
ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , .List ) )
\ No newline at end of file
diff --git a/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.state b/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.state
index 47b68a635..5ae71d2d8 100644
--- a/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.state
+++ b/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.state
@@ -1,53 +1,66 @@
- #execStmts ( .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindReturn , span: span ( 73 ) ) ) ~> .K
+ #readOperandsAux ( ListItem ( Integer ( 10 , 32 , true ) ) , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) .Operands ) ~> #freezer#execTerminatorCall(_,_,_,_,_,_,_,_,_,_)_KMIR-CONTROL-FLOW_KItem_String_Body_Operands_List_KItem_Ty_Place_MaybeBasicBlockIdx_UnwindAction_Span4_ ( "foo" ~> .K , body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 73 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 74 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 16 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 77 ) , mut: mutabilityNot ) .LocalDecls , argCount: 3 , varDebugInfo: varDebugInfo (... name: symbol ( "_i" ) , sourceInfo: sourceInfo (... span: span ( 75 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "_b" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "_f" ) , sourceInfo: sourceInfo (... span: span ( 77 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 3 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 78 ) ) ~> .K , operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) .Operands ~> .K , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) )
+ ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 10 , 32 , true ) )
+ ListItem ( BoolVal ( false ) )
+ ListItem ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) ) ) , ty ( 28 ) , mutabilityNot ) )
+ ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 11 , 32 , true ) )
+ ListItem ( BoolVal ( true ) )
+ ListItem ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) ) ) , ty ( 29 ) , mutabilityNot ) )
+ ListItem ( typedValue ( Moved , ty ( 27 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) )
+ ListItem ( typedValue ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityMut ) )
+ ListItem ( typedValue ( BoolVal ( false ) , ty ( 26 ) , mutabilityMut ) )
+ ListItem ( typedValue ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) , ty ( 27 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) )
+ ListItem ( newLocal ( ty ( 16 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 26 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) ) ~> .K , ty ( 25 ) ~> .K , place (... local: local ( 4 ) , projection: .ProjectionElems ) ~> .K , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) ~> .K , unwindActionContinue ~> .K , span ( 51 ) ~> .K ) ~> .K
noReturn
- ty ( 25 )
+ ty ( -1 )
- ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 73 ) ) ) )
+ ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 7 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 10 ) ) ) ) operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) operandConstant ( constOperand (... span: span ( 54 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00$@" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 13 ) ) ) ) operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 14 ) ) ) ) operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 62 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) )
+ ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 65 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 66 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 67 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 8 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 64 ) ) ) )
+ ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 68 ) ) ) )
ty ( -1 )
- place (... local: local ( 4 ) , projection: .ProjectionElems )
+ place (... local: local ( 0 ) , projection: .ProjectionElems )
- someBasicBlockIdx ( basicBlockIdx ( 1 ) )
+ noBasicBlockIdx
unwindActionContinue
ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) )
- ListItem ( typedValue ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityNot ) )
- ListItem ( typedValue ( BoolVal ( false ) , ty ( 26 ) , mutabilityNot ) )
- ListItem ( typedValue ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) , ty ( 27 ) , mutabilityNot ) )
+ ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 10 , 32 , true ) )
+ ListItem ( BoolVal ( false ) )
+ ListItem ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) ) ) , ty ( 28 ) , mutabilityNot ) )
+ ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 11 , 32 , true ) )
+ ListItem ( BoolVal ( true ) )
+ ListItem ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) ) ) , ty ( 29 ) , mutabilityNot ) )
+ ListItem ( typedValue ( Moved , ty ( 27 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) )
+ ListItem ( typedValue ( Moved , ty ( 16 ) , mutabilityMut ) )
+ ListItem ( typedValue ( BoolVal ( false ) , ty ( 26 ) , mutabilityMut ) )
+ ListItem ( typedValue ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) , ty ( 27 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) )
+ ListItem ( newLocal ( ty ( 16 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 26 ) , mutabilityMut ) )
+ ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) )
- ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) )
- ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 10 , 32 , true ) )
- ListItem ( BoolVal ( false ) )
- ListItem ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) ) ) , ty ( 28 ) , mutabilityNot ) )
- ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 11 , 32 , true ) )
- ListItem ( BoolVal ( true ) )
- ListItem ( thunk ( UnableToDecode ( b"\x00\x00\x00\x00\x00\x00$@" , typeInfoPrimitiveType ( primTypeFloat ( floatTyF64 ) ) ) ) ) ) , ty ( 29 ) , mutabilityNot ) )
- ListItem ( typedValue ( Moved , ty ( 27 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) )
- ListItem ( typedValue ( Moved , ty ( 16 ) , mutabilityMut ) )
- ListItem ( typedValue ( Moved , ty ( 26 ) , mutabilityMut ) )
- ListItem ( typedValue ( Moved , ty ( 27 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) )
- ListItem ( newLocal ( ty ( 16 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 26 ) , mutabilityMut ) )
- ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) ) ) )
ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , .List ) )
\ No newline at end of file
diff --git a/kmir/src/tests/integration/data/prove-rs/show/assert-inhabited-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/assert-inhabited-fail.main.expected
index cdb5d7e6d..449cc3ea8 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/assert-inhabited-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/assert-inhabited-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (10 steps)
+│ (14 steps)
└─ 3 (stuck, leaf)
#ProgramError ( AssertInhabitedFailure ) ~> .K
function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/assert-true.main.cli-custom-printer.expected b/kmir/src/tests/integration/data/prove-rs/show/assert-true.main.cli-custom-printer.expected
index bd2fdf0a9..1ba00c642 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/assert-true.main.cli-custom-printer.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/assert-true.main.cli-custom-printer.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: src/rust/library/std/src/rt.rs:194
│
-│ (7 steps)
+│ (11 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/assert-true.main.cli-default-printer.expected b/kmir/src/tests/integration/data/prove-rs/show/assert-true.main.cli-default-printer.expected
index bd2fdf0a9..1ba00c642 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/assert-true.main.cli-default-printer.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/assert-true.main.cli-default-printer.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: src/rust/library/std/src/rt.rs:194
│
-│ (7 steps)
+│ (11 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/assert_eq_exp.main.expected b/kmir/src/tests/integration/data/prove-rs/show/assert_eq_exp.main.expected
index 3fe017dcf..7214f6c2a 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/assert_eq_exp.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/assert_eq_exp.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (148 steps)
+│ (152 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/assume-cheatcode-conflict-fail.check_assume_conflict.expected b/kmir/src/tests/integration/data/prove-rs/show/assume-cheatcode-conflict-fail.check_assume_conflict.expected
index 470f41c25..8ea58c442 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/assume-cheatcode-conflict-fail.check_assume_conflict.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/assume-cheatcode-conflict-fail.check_assume_conflict.expected
@@ -3,9 +3,9 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (61 steps)
+│ (65 steps)
└─ 3 (stuck, leaf)
- #setUpCalleeData ( monoItemFn ( ... name: symbol ( "_ZN4core9panicking5panic17h
+ #prepareTerminatorCall ( ty ( ) , monoItemFn ( ... name: symbol ( "_ZN4core9p
span: 32
diff --git a/kmir/src/tests/integration/data/prove-rs/show/bitwise-not-shift.main.expected b/kmir/src/tests/integration/data/prove-rs/show/bitwise-not-shift.main.expected
index 6cf403b84..c2ad63ec0 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/bitwise-not-shift.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/bitwise-not-shift.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (837 steps)
+│ (901 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/box_heap_alloc-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/box_heap_alloc-fail.main.expected
index 3993211b3..f30b30110 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/box_heap_alloc-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/box_heap_alloc-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (73 steps)
+│ (88 steps)
├─ 3
│ #cast ( Integer ( 4 , 64 , false ) , castKindTransmute , ty ( 29 ) , ty ( 50 ) )
│ span: 186
diff --git a/kmir/src/tests/integration/data/prove-rs/show/break-on-function.main.cli-break-on-function.expected b/kmir/src/tests/integration/data/prove-rs/show/break-on-function.main.cli-break-on-function.expected
index 59a3b1f2a..8b2e90a07 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/break-on-function.main.cli-break-on-function.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/break-on-function.main.cli-break-on-function.expected
@@ -3,33 +3,33 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: src/rust/library/std/src/rt.rs:194
│
-│ (7 steps)
+│ (17 steps)
├─ 3
-│ #execTerminatorCall ( ty ( 31 ) , monoItemFn ( ... name: symbol ( "foo" ) , id:
+│ #execTerminatorCall ( "foo" , .List , body ( ... blocks: basicBlock ( ... statem
│ function: main
│ span: /prove-rs/break-on-function.rs:4
│
│ (1 step)
├─ 4
-│ #setUpCalleeData ( monoItemFn ( ... name: symbol ( "foo" ) , id: defId ( 7 ) , b
+│ #execBlock ( basicBlock ( ... statements: .Statements , terminator: terminator (
│ function: foo
│ span: /prove-rs/break-on-function.rs:4
│
-│ (5 steps)
+│ (13 steps)
├─ 5
-│ #execTerminatorCall ( ty ( 26 ) , monoItemFn ( ... name: symbol ( "std::hint::bl
+│ #execTerminatorCall ( "std::hint::black_box::" , ListItem (Integer ( 42 , 3
│ function: foo
│ span: /rust/library/core/src/hint.rs:389
│
│ (1 step)
├─ 6
-│ #setUpCalleeData ( monoItemFn ( ... name: symbol ( "std::hint::black_box::"
+│ #execBlock ( basicBlock ( ... statements: .Statements , terminator: terminator (
│ function: std::hint::black_box::
│ span: /rust/library/core/src/hint.rs:389
│
-│ (12 steps)
+│ (3 steps)
├─ 7
-│ #execTerminatorCall ( ty ( 25 ) , IntrinsicFunction ( symbol ( "black_box" ) ) ,
+│ #prepareTerminatorCall ( ty ( ) , IntrinsicFunction ( symbol ( "black_box" )
│ function: std::hint::black_box::
│ span: /rust/library/core/src/hint.rs:389
│
@@ -39,7 +39,7 @@
│ function: std::hint::black_box::
│ span: /rust/library/core/src/hint.rs:389
│
-│ (41 steps)
+│ (45 steps)
├─ 9 (terminal)
│ #EndProgram ~> .K
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/interior-mut-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/interior-mut-fail.main.expected
index 4c165cf72..f2d8103de 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/interior-mut-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/interior-mut-fail.main.expected
@@ -3,9 +3,9 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (877 steps)
+│ (935 steps)
└─ 3 (stuck, leaf)
- #setUpCalleeData ( monoItemFn ( ... name: symbol ( "_ZN4core4cell22panic_already
+ #prepareTerminatorCall ( ty ( ) , monoItemFn ( ... name: symbol ( "_ZN4core4c
span: 32
diff --git a/kmir/src/tests/integration/data/prove-rs/show/interior-mut3-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/interior-mut3-fail.main.expected
index ea0b2c00a..f4e075df8 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/interior-mut3-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/interior-mut3-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (94 steps)
+│ (106 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/iter_next_3.main.expected b/kmir/src/tests/integration/data/prove-rs/show/iter_next_3.main.expected
index a4c5bdc3d..a42cbda98 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/iter_next_3.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/iter_next_3.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (2028 steps)
+│ (2078 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/iterator-simple.main.expected b/kmir/src/tests/integration/data/prove-rs/show/iterator-simple.main.expected
index f1cd9a4d1..cb42d4457 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/iterator-simple.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/iterator-simple.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (798 steps)
+│ (817 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/local-raw-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/local-raw-fail.main.expected
index 193e3e171..78c7c2548 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/local-raw-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/local-raw-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (46 steps)
+│ (50 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/niche-enum.main.expected b/kmir/src/tests/integration/data/prove-rs/show/niche-enum.main.expected
index 586c10ed1..0fe9ed0a0 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/niche-enum.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/niche-enum.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (740 steps)
+│ (785 steps)
├─ 3 (terminal)
│ #EndProgram ~> .K
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/niche-enum.smir.foo.cli-stats-leaves.expected b/kmir/src/tests/integration/data/prove-rs/show/niche-enum.smir.foo.cli-stats-leaves.expected
index b9454d080..faf9ff149 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/niche-enum.smir.foo.cli-stats-leaves.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/niche-enum.smir.foo.cli-stats-leaves.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: src/rust/library/std/src/rt.rs:194
│
-│ (14 steps)
+│ (19 steps)
├─ 3 (split)
│ #selectBlock ( switchTargets ( ... branches: branch ( 1 , basicBlockIdx ( 3 ) )
│ function: foo
@@ -94,11 +94,11 @@ Node roles (exclusive):
Leaf paths from init:
total leaves (non-root): 1
reachable leaves : 1
- total steps : 34
+ total steps : 39
- leaf 2 (path 1/3): steps 34, path 1 -> 3 -> 5 -> 7 -> 9 -> 11 -> 2
- leaf 2 (path 2/3): steps 47, path 1 -> 3 -> 4 -> 6 -> 2
- leaf 2 (path 3/3): steps 48, path 1 -> 3 -> 5 -> 7 -> 8 -> 10 -> 2
+ leaf 2 (path 1/3): steps 39, path 1 -> 3 -> 5 -> 7 -> 9 -> 11 -> 2
+ leaf 2 (path 2/3): steps 52, path 1 -> 3 -> 4 -> 6 -> 2
+ leaf 2 (path 3/3): steps 53, path 1 -> 3 -> 5 -> 7 -> 8 -> 10 -> 2
LEAF CELLS
---------------
diff --git a/kmir/src/tests/integration/data/prove-rs/show/offset-u8-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/offset-u8-fail.main.expected
index c373bdd71..93151a4b4 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/offset-u8-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/offset-u8-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (35 steps)
+│ (48 steps)
└─ 3 (stuck, leaf)
#traverseProjection ( toAlloc ( allocId ( 0 ) ) , StringVal ( "123" ) , .Project
span: 48
diff --git a/kmir/src/tests/integration/data/prove-rs/show/pointer-cast-length-test-fail.array_cast_test.expected b/kmir/src/tests/integration/data/prove-rs/show/pointer-cast-length-test-fail.array_cast_test.expected
index 9198552ba..1ee71364f 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/pointer-cast-length-test-fail.array_cast_test.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/pointer-cast-length-test-fail.array_cast_test.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (44 steps)
+│ (49 steps)
├─ 3 (split)
│ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 2 ) )
┃
@@ -15,9 +15,9 @@
┃ ├─ 4
┃ │ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 2 ) )
┃ │
-┃ │ (6 steps)
+┃ │ (5 steps)
┃ └─ 6 (stuck, leaf)
-┃ #setUpCalleeData ( monoItemFn ( ... name: symbol ( "_ZN4core9panicking5panic17h
+┃ #prepareTerminatorCall ( ty ( ) , monoItemFn ( ... name: symbol ( "_ZN4core9p
┃ span: 32
┃
┗━━┓ subst: .Subst
@@ -27,7 +27,7 @@
├─ 5
│ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 2 ) )
│
- │ (211 steps)
+ │ (221 steps)
├─ 7
│ #traverseProjection ( toStack ( 1 , local ( 2 ) ) , Range ( range ( #mapOffset (
│ span: 87
@@ -51,7 +51,7 @@
┃ ┃ │ #traverseProjection ( toStack ( 1 , local ( 2 ) ) , Range ( range ( range ( #map
┃ ┃ │ span: 87
┃ ┃ │
- ┃ ┃ │ (114 steps)
+ ┃ ┃ │ (119 steps)
┃ ┃ └─ 13 (stuck, leaf)
┃ ┃ #traverseProjection ( toLocal ( 5 ) , Range ( range ( #mapOffset ( ARG_ARRAY1:Li
┃ ┃ span: 97
diff --git a/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-nested-wrapper-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-nested-wrapper-fail.main.expected
index 28b856633..ba7ee1b7c 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-nested-wrapper-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-nested-wrapper-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (68 steps)
+│ (72 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-singleton-wrapped-array-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-singleton-wrapped-array-fail.main.expected
index 28b856633..ba7ee1b7c 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-singleton-wrapped-array-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-singleton-wrapped-array-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (68 steps)
+│ (72 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-wrapper-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-wrapper-fail.main.expected
index 28b856633..ba7ee1b7c 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-wrapper-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/ptr-cast-array-to-wrapper-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (68 steps)
+│ (72 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/ptr-through-wrapper-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/ptr-through-wrapper-fail.main.expected
index 193e3e171..78c7c2548 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/ptr-through-wrapper-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/ptr-through-wrapper-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (46 steps)
+│ (50 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/raw-ptr-cast-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/raw-ptr-cast-fail.main.expected
index 796c7be18..89447b9a9 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/raw-ptr-cast-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/raw-ptr-cast-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (60 steps)
+│ (64 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/ref-ptr-cast-elem-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/ref-ptr-cast-elem-fail.main.expected
index 0f38a6cfb..a05bd92d9 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/ref-ptr-cast-elem-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/ref-ptr-cast-elem-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (64 steps)
+│ (68 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/ref-ptr-cast-elem-offset-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/ref-ptr-cast-elem-offset-fail.main.expected
index 2dd05b5e9..ea0252c8b 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/ref-ptr-cast-elem-offset-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/ref-ptr-cast-elem-offset-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (125 steps)
+│ (131 steps)
├─ 3
│ #cast ( PtrLocal ( 0 , place ( ... local: local ( 1 ) , projection: projectionEl
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.eats_all_args.expected b/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.eats_all_args.expected
index d75e7ed57..51f8ef837 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.eats_all_args.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.eats_all_args.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (52 steps)
+│ (65 steps)
├─ 3 (split)
│ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 3 ) )
┃
diff --git a/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.main.cli-stats-leaves.expected b/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.main.cli-stats-leaves.expected
index e4e10b74c..9911ccdb4 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.main.cli-stats-leaves.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.main.cli-stats-leaves.expected
@@ -3,9 +3,10 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: src/rust/library/std/src/rt.rs:194
│
-│ (566 steps)
+│ (580 steps)
└─ 3 (stuck, leaf)
- #setUpCalleeData ( monoItemFn ( ... name: symbol ( "_ZN4core9panicking5panic17h
+ #prepareTerminatorCall ( ty ( ) , monoItemFn ( ... name: symbol ( "_ZN4core9p
+ function: main
span: no-location:0
@@ -25,14 +26,14 @@ Node roles (exclusive):
Leaf paths from init:
total leaves (non-root): 1
reachable leaves : 1
- total steps : 566
+ total steps : 580
- leaf 3: steps 566, path 1 -> 3
+ leaf 3: steps 580, path 1 -> 3
LEAF CELLS
---------------
Node 3:
- #setUpCalleeData ( monoItemFn ( ... name: symbol ( "_ZN4core9panicking5panic17hE" ) , id: defId ( 38 ) , body: noBody ) , operandConstant ( constOperand ( ... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst ( ... kind: constantKindAllocated ( allocation ( ... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap ( ... ptrs: provenanceMapEntry ( ... offset: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 39 ) , id: mirConstId ( 25 ) ) ) ) .Operands , span ( 117 ) ) ~> .K
+ #prepareTerminatorCall ( ty ( ) , monoItemFn ( ... name: symbol ( "_ZN4core9panicking5panic17hE" ) , id: defId ( 38 ) , body: noBody ) , operandConstant ( constOperand ( ... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst ( ... kind: constantKindAllocated ( allocation ( ... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap ( ... ptrs: provenanceMapEntry ( ... offset: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 39 ) , id: mirConstId ( 25 ) ) ) ) .Operands , place ( ... local: local ( 25 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , span ( 117 ) ) ~> .K
>> function: core::panicking::panic::h
>> call span: /kmir/src/tests/integration/data/prove-rs/symbolic-args-fail.rs:53:5
>> message: 'assertion failed: false'
\ No newline at end of file
diff --git a/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.main.expected
index e5b630195..098aed0d3 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/symbolic-args-fail.main.expected
@@ -3,9 +3,10 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (566 steps)
+│ (580 steps)
└─ 3 (stuck, leaf)
- #setUpCalleeData ( monoItemFn ( ... name: symbol ( "_ZN4core9panicking5panic17h
+ #prepareTerminatorCall ( ty ( ) , monoItemFn ( ... name: symbol ( "_ZN4core9p
+ function: main
span: 32
diff --git a/kmir/src/tests/integration/data/prove-rs/show/symbolic-structs-fail.eats_struct_args.expected b/kmir/src/tests/integration/data/prove-rs/show/symbolic-structs-fail.eats_struct_args.expected
index 673eb0193..4aca699c4 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/symbolic-structs-fail.eats_struct_args.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/symbolic-structs-fail.eats_struct_args.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (61 steps)
+│ (68 steps)
├─ 3 (split)
│ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 2 ) )
┃
@@ -27,9 +27,9 @@
┃ ┃ ├─ 8
┃ ┃ │ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 5 ) )
┃ ┃ │
-┃ ┃ │ (6 steps)
+┃ ┃ │ (5 steps)
┃ ┃ └─ 10 (stuck, leaf)
-┃ ┃ #setUpCalleeData ( monoItemFn ( ... name: symbol ( "_ZN4core9panicking5panic17h
+┃ ┃ #prepareTerminatorCall ( ty ( ) , monoItemFn ( ... name: symbol ( "_ZN4core9p
┃ ┃ span: 32
┃ ┃
┃ ┗━━┓ subst: .Subst
diff --git a/kmir/src/tests/integration/data/prove-rs/show/test_offset_from-fail.testing.expected b/kmir/src/tests/integration/data/prove-rs/show/test_offset_from-fail.testing.expected
index 816d1da62..e37de061c 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/test_offset_from-fail.testing.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/test_offset_from-fail.testing.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (297 steps)
+│ (302 steps)
├─ 3 (split)
│ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 8 ) )
┃
@@ -15,7 +15,7 @@
┃ ├─ 4
┃ │ #selectBlock ( switchTargets ( ... branches: branch ( 0 , basicBlockIdx ( 8 ) )
┃ │
-┃ │ (588 steps)
+┃ │ (602 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
@@ -43,7 +43,7 @@
┃ ├─ 8
┃ │ #selectBlock ( switchTargets ( ... branches: branch ( 1 , basicBlockIdx ( 7 ) )
┃ │
- ┃ │ (101 steps)
+ ┃ │ (107 steps)
┃ └─ 10 (stuck, leaf)
┃ #ProgramError ( #UBErrorPtrOffsetDiff ( PtrLocal ( 1 , place ( ... local: local
┃
@@ -66,7 +66,7 @@
┃ ├─ 12
┃ │ #selectBlock ( switchTargets ( ... branches: branch ( 2 , basicBlockIdx ( 6 ) )
┃ │
- ┃ │ (101 steps)
+ ┃ │ (107 steps)
┃ └─ 14 (stuck, leaf)
┃ #ProgramError ( #UBErrorPtrOffsetDiff ( PtrLocal ( 1 , place ( ... local: local
┃
diff --git a/kmir/src/tests/integration/data/prove-rs/show/transmute-maybe-uninit-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/transmute-maybe-uninit-fail.main.expected
index 12948003f..e8b59adc4 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/transmute-maybe-uninit-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/transmute-maybe-uninit-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (16 steps)
+│ (20 steps)
└─ 3 (stuck, leaf)
#ProgramError ( #UBInvalidTransmuteMaybeUninit )
~> #freezer#setLocalValue(_,_)_
diff --git a/kmir/src/tests/integration/data/prove-rs/show/transmute-u8-to-enum-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/transmute-u8-to-enum-fail.main.expected
index 4d7658d18..eb62277e7 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/transmute-u8-to-enum-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/transmute-u8-to-enum-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (15 steps)
+│ (19 steps)
└─ 3 (stuck, leaf)
#ProgramError ( #UBErrorInvalidDiscriminantsInEnumCast ) ~> .K
function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/unions-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/unions-fail.main.expected
index dea9bd948..a1a485c91 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/unions-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/unions-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (76 steps)
+│ (80 steps)
└─ 3 (stuck, leaf)
#traverseProjection ( toLocal ( 1 ) , Union ( fieldIdx ( 0 ) , Integer ( -1 , 8
function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/volatile_load_static-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/volatile_load_static-fail.main.expected
index e68710b66..4a48a1dd1 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/volatile_load_static-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/volatile_load_static-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (10 steps)
+│ (14 steps)
├─ 3
│ #decodeConstant ( constantKindAllocated ( allocation ( ... bytes: b"\x00\x00\x00
│ function: main
diff --git a/kmir/src/tests/integration/data/prove-rs/show/volatile_store_static-fail.main.expected b/kmir/src/tests/integration/data/prove-rs/show/volatile_store_static-fail.main.expected
index 420e0659d..44a869a20 100644
--- a/kmir/src/tests/integration/data/prove-rs/show/volatile_store_static-fail.main.expected
+++ b/kmir/src/tests/integration/data/prove-rs/show/volatile_store_static-fail.main.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (10 steps)
+│ (14 steps)
├─ 3
│ #decodeConstant ( constantKindAllocated ( allocation ( ... bytes: b"\x00\x00\x00
│ function: main
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i128.expected
index 8ebaab361..c30fe4a9b 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_INT1:Int , 128 , true ) , Intege
│ span: 301
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int +Int ARG_INT2:Int , 128 , Signed ) , 128 , tru
┃ │ span: 301
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i16.expected
index 469e3ebff..958288164 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_INT1:Int , 16 , true ) , Integer
│ span: 115
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int +Int ARG_INT2:Int , 16 , Signed ) , 16 , true
┃ │ span: 115
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i32.expected
index c23b7ba5e..990039394 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_INT1:Int , 32 , true ) , Integer
│ span: 146
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int +Int ARG_INT2:Int , 32 , Signed ) , 32 , true
┃ │ span: 146
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i64.expected
index 57dd3469d..af360cbdd 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_INT1:Int , 64 , true ) , Integer
│ span: 177
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int +Int ARG_INT2:Int , 64 , Signed ) , 64 , true
┃ │ span: 177
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i8.expected
index 16b2aeed4..729270f91 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_i8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_INT1:Int , 8 , true ) , Integer
│ span: 53
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int +Int ARG_INT2:Int , 8 , Signed ) , 8 , true )
┃ │ span: 53
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u128.expected
index 40d83226c..dc463f0dd 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_UINT1:Int , 128 , false ) , Inte
│ span: 332
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int +Int ARG_UINT2:Int &Int 34028236692093846346337460743176
┃ │ span: 332
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u16.expected
index 97948e0a6..dbdff05d4 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_UINT1:Int , 16 , false ) , Integ
│ span: 208
@@ -16,7 +16,7 @@
~> #freezer
┃ │ span: 208
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u32.expected
index 1680f4224..a31de66e3 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_UINT1:Int , 32 , false ) , Integ
│ span: 239
@@ -16,7 +16,7 @@
~> #fr
┃ │ span: 239
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u64.expected
index 412ad1c08..b80f56e07 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_UINT1:Int , 64 , false ) , Integ
│ span: 270
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int +Int ARG_UINT2:Int &Int 18446744073709551615 , 64 , fals
┃ │ span: 270
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u8.expected
index bd0e55614..85d8a9101 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_add-fail.unchecked_add_u8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpAddUnchecked , Integer ( ARG_UINT1:Int , 8 , false ) , Intege
│ span: 84
@@ -16,7 +16,7 @@
~> #freezer#se
┃ │ span: 84
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i128.expected
index 257c4d3c5..7e03237c8 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_INT1:Int , 128 , true ) , Intege
│ span: 301
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int *Int ARG_INT2:Int , 128 , Signed ) , 128 , tru
┃ │ span: 301
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i16.expected
index ac5d7b039..5f7e4cb5c 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_INT1:Int , 16 , true ) , Integer
│ span: 115
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int *Int ARG_INT2:Int , 16 , Signed ) , 16 , true
┃ │ span: 115
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i32.expected
index fd2162753..c7250c588 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_INT1:Int , 32 , true ) , Integer
│ span: 146
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int *Int ARG_INT2:Int , 32 , Signed ) , 32 , true
┃ │ span: 146
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i64.expected
index f8395cba5..f51ea9c39 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_INT1:Int , 64 , true ) , Integer
│ span: 177
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int *Int ARG_INT2:Int , 64 , Signed ) , 64 , true
┃ │ span: 177
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i8.expected
index 516befead..c933c0027 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_i8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_INT1:Int , 8 , true ) , Integer
│ span: 53
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int *Int ARG_INT2:Int , 8 , Signed ) , 8 , true )
┃ │ span: 53
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u128.expected
index 7bc83384a..ebba3d43b 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_UINT1:Int , 128 , false ) , Inte
│ span: 332
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int *Int ARG_UINT2:Int &Int 34028236692093846346337460743176
┃ │ span: 332
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u16.expected
index 9c8b8fa13..93c244e7b 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_UINT1:Int , 16 , false ) , Integ
│ span: 208
@@ -16,7 +16,7 @@
~> #freezer
┃ │ span: 208
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u32.expected
index f7153e5f8..f366774a8 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_UINT1:Int , 32 , false ) , Integ
│ span: 239
@@ -16,7 +16,7 @@
~> #fr
┃ │ span: 239
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u64.expected
index 8542f300a..d5d6c5ac5 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_UINT1:Int , 64 , false ) , Integ
│ span: 270
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int *Int ARG_UINT2:Int &Int 18446744073709551615 , 64 , fals
┃ │ span: 270
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u8.expected
index 6519b70b7..39bffcdbb 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_mul-fail.unchecked_mul_u8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpMulUnchecked , Integer ( ARG_UINT1:Int , 8 , false ) , Intege
│ span: 84
@@ -16,7 +16,7 @@
~> #freezer#se
┃ │ span: 84
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i128.expected
index fd29da216..d28c326e6 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (50 steps)
+│ (60 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( 0 , 128 , true ) , Integer ( ARG_INT
│ span: 178
@@ -16,7 +16,7 @@
~> #fre
┃ │ span: 178
┃ │
-┃ │ (67 steps)
+┃ │ (72 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i16.expected
index 72f28e18e..c1a60021e 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (50 steps)
+│ (60 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( 0 , 16 , true ) , Integer ( ARG_INT1
│ span: 91
@@ -16,7 +16,7 @@
~> #freez
┃ │ span: 91
┃ │
-┃ │ (67 steps)
+┃ │ (72 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i32.expected
index 1964ce895..fb22f2b5e 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (50 steps)
+│ (60 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( 0 , 32 , true ) , Integer ( ARG_INT1
│ span: 120
@@ -16,7 +16,7 @@
~> #freez
┃ │ span: 120
┃ │
-┃ │ (67 steps)
+┃ │ (72 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i64.expected
index bd1cbbe06..c9b069bbe 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (50 steps)
+│ (60 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( 0 , 64 , true ) , Integer ( ARG_INT1
│ span: 149
@@ -16,7 +16,7 @@
~> #freez
┃ │ span: 149
┃ │
-┃ │ (67 steps)
+┃ │ (72 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i8.expected
index c15a88519..5bfe1a5c0 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_neg-fail.unchecked_neg_i8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (50 steps)
+│ (60 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( 0 , 8 , true ) , Integer ( ARG_INT1:
│ span: 58
@@ -16,7 +16,7 @@
~> #freezer
┃ │ span: 58
┃ │
-┃ │ (67 steps)
+┃ │ (72 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i128.expected
index 57eaa182d..5d71d42fe 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_INT1:Int , 128 , true ) , Intege
│ span: 274
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int < .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i16.expected
index 7d5a42edc..24a28d9a5 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_INT1:Int , 16 , true ) , Integer
│ span: 112
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int < .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i32.expected
index 052ceb2ce..269eb59c0 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_INT1:Int , 32 , true ) , Integer
│ span: 139
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int < .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i64.expected
index d2eb45316..df03a4540 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_INT1:Int , 64 , true ) , Integer
│ span: 166
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int < .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i8.expected
index d62c1b8b2..700ee9c80 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_i8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_INT1:Int , 8 , true ) , Integer
│ span: 58
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int < .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u128.expected
index 29fbeb3d1..e5e32c491 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_UINT1:Int , 128 , false ) , Inte
│ span: 301
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int < .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u16.expected
index f188b583b..4f671ac7a 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_UINT1:Int , 16 , false ) , Integ
│ span: 193
@@ -16,7 +16,7 @@
~> #free
┃ │ span: 193
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u32.expected
index cf5f2c5dd..0c501633b 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_UINT1:Int , 32 , false ) , Integ
│ span: 220
@@ -16,7 +16,7 @@
~>
┃ │ span: 220
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u64.expected
index 6ed421f4d..6e8b7687d 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_UINT1:Int , 64 , false ) , Integ
│ span: 247
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int < .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u8.expected
index 1ffb3dc3e..ecfef0690 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shl-fail.unchecked_shl_u8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShlUnchecked , Integer ( ARG_UINT1:Int , 8 , false ) , Intege
│ span: 85
@@ -16,7 +16,7 @@
~> #freezer
┃ │ span: 85
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i128.expected
index a84d5aa5b..a0c013aeb 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_INT1:Int , 128 , true ) , Intege
│ span: 274
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int >>Int ARG_UINT2:Int modInt 3402823669209384634
┃ │ span: 274
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i16.expected
index 527202efb..8ccf5d44d 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_INT1:Int , 16 , true ) , Integer
│ span: 112
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int >>Int ARG_UINT2:Int modInt 65536 , 16 , Signed
┃ │ span: 112
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i32.expected
index 0128d3fa8..8b650683d 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_INT1:Int , 32 , true ) , Integer
│ span: 139
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int >>Int ARG_UINT2:Int modInt 4294967296 , 32 , S
┃ │ span: 139
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i64.expected
index 9e7dad859..fad9fc6d9 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_INT1:Int , 64 , true ) , Integer
│ span: 166
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int >>Int ARG_UINT2:Int modInt 1844674407370955161
┃ │ span: 166
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i8.expected
index a71512a69..00119a66c 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_i8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_INT1:Int , 8 , true ) , Integer
│ span: 58
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int >>Int ARG_UINT2:Int modInt 256 , 8 , Signed )
┃ │ span: 58
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u128.expected
index 06c1a5167..cef1b56b1 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_UINT1:Int , 128 , false ) , Inte
│ span: 301
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int >>Int ARG_UINT2:Int modInt 34028236692093846346337460743
┃ │ span: 301
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u16.expected
index 01762529e..ebfa41a7c 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_UINT1:Int , 16 , false ) , Integ
│ span: 193
@@ -16,7 +16,7 @@
~> #free
┃ │ span: 193
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u32.expected
index 00cceb40c..36f7aabd8 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_UINT1:Int , 32 , false ) , Integ
│ span: 220
@@ -16,7 +16,7 @@
~>
┃ │ span: 220
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u64.expected
index f700cf0d8..e7a8e1a11 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_UINT1:Int , 64 , false ) , Integ
│ span: 247
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int >>Int ARG_UINT2:Int modInt 18446744073709551616 , 64 , f
┃ │ span: 247
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u8.expected
index 9c712f1a3..79320633c 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_shr-fail.unchecked_shr_u8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpShrUnchecked , Integer ( ARG_UINT1:Int , 8 , false ) , Intege
│ span: 85
@@ -16,7 +16,7 @@
~> #freezer
┃ │ span: 85
┃ │
-┃ │ (110 steps)
+┃ │ (116 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i128.expected
index ea78ced21..c2252fe47 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_INT1:Int , 128 , true ) , Intege
│ span: 301
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int -Int ARG_INT2:Int , 128 , Signed ) , 128 , tru
┃ │ span: 301
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i16.expected
index 743fd093c..6138f12d0 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_INT1:Int , 16 , true ) , Integer
│ span: 115
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int -Int ARG_INT2:Int , 16 , Signed ) , 16 , true
┃ │ span: 115
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i32.expected
index c1a06dce6..a454b71de 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_INT1:Int , 32 , true ) , Integer
│ span: 146
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int -Int ARG_INT2:Int , 32 , Signed ) , 32 , true
┃ │ span: 146
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i64.expected
index b42cde312..ceee85960 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_INT1:Int , 64 , true ) , Integer
│ span: 177
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int -Int ARG_INT2:Int , 64 , Signed ) , 64 , true
┃ │ span: 177
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i8.expected
index 0a56f6b97..cb6908e88 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_i8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_INT1:Int , 8 , true ) , Integer
│ span: 53
@@ -15,7 +15,7 @@
┃ │ Integer ( truncate ( ARG_INT1:Int -Int ARG_INT2:Int , 8 , Signed ) , 8 , true )
┃ │ span: 53
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u128.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u128.expected
index 8588fcce4..8775573a4 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u128.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u128.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_UINT1:Int , 128 , false ) , Inte
│ span: 332
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int -Int ARG_UINT2:Int &Int 34028236692093846346337460743176
┃ │ span: 332
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u16.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u16.expected
index d8ace363c..697646baf 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u16.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u16.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_UINT1:Int , 16 , false ) , Integ
│ span: 208
@@ -16,7 +16,7 @@
~> #freezer
┃ │ span: 208
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u32.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u32.expected
index f800b206f..8e3660b59 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u32.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u32.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_UINT1:Int , 32 , false ) , Integ
│ span: 239
@@ -16,7 +16,7 @@
~> #fr
┃ │ span: 239
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u64.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u64.expected
index c0b199507..198559caa 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u64.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u64.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_UINT1:Int , 64 , false ) , Integ
│ span: 270
@@ -15,7 +15,7 @@
┃ │ Integer ( ARG_UINT1:Int -Int ARG_UINT2:Int &Int 18446744073709551615 , 64 , fals
┃ │ span: 270
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u8.expected b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u8.expected
index 6888f0278..e52812b1d 100644
--- a/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u8.expected
+++ b/kmir/src/tests/integration/data/verify-rust-std/0011-floats-ints/show/unchecked_sub-fail.unchecked_sub_u8.expected
@@ -3,7 +3,7 @@
│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC
│ span: 0
│
-│ (56 steps)
+│ (68 steps)
├─ 3
│ #applyBinOp ( binOpSubUnchecked , Integer ( ARG_UINT1:Int , 8 , false ) , Intege
│ span: 84
@@ -16,7 +16,7 @@
~> #freezer#se
┃ │ span: 84
┃ │
-┃ │ (70 steps)
+┃ │ (76 steps)
┃ ├─ 6 (terminal)
┃ │ #EndProgram ~> .K
┃ │
diff --git a/kmir/src/tests/unit/test_fixtures.py b/kmir/src/tests/unit/test_fixtures.py
index b9a3de5b5..0556a26bb 100644
--- a/kmir/src/tests/unit/test_fixtures.py
+++ b/kmir/src/tests/unit/test_fixtures.py
@@ -2,7 +2,7 @@
import pytest
-from kmir.testing.fixtures import _normalize_symbol_hashes
+from kmir.testing.fixtures import _normalize_unstable_snapshot_values
@pytest.mark.parametrize(
@@ -24,4 +24,11 @@
ids=['generic-mangled-full', 'generic-mangled-truncated', 'demangled'],
)
def test_normalize_symbol_hashes(raw: str, expected: str) -> None:
- assert _normalize_symbol_hashes(raw) == expected
+ assert _normalize_unstable_snapshot_values(raw) == expected
+
+
+def test_normalize_prepare_terminator_call_type_id() -> None:
+ assert (
+ _normalize_unstable_snapshot_values('#prepareTerminatorCall ( ty ( 26 ) , monoItemFn ( ... ) )')
+ == '#prepareTerminatorCall ( ty ( ) , monoItemFn ( ... ) )'
+ )