diff --git a/kmir/src/kmir/__main__.py b/kmir/src/kmir/__main__.py index 11e9b493f..1820ef5ae 100644 --- a/kmir/src/kmir/__main__.py +++ b/kmir/src/kmir/__main__.py @@ -9,9 +9,12 @@ from pyk.cli.args import KCLIArgs from pyk.cterm.show import CTermShow +from pyk.kast.inner import KApply, KRewrite from pyk.kast.pretty import PrettyPrinter from pyk.kdist import kdist -from pyk.proof.reachability import APRProof +from pyk.proof import Prover +from pyk.proof.implies import EqualityProof, ImpliesProver +from pyk.proof.reachability import APRProof, APRProver from pyk.proof.show import APRProofShow from pyk.proof.tui import APRProofViewer @@ -22,6 +25,7 @@ InfoOpts, LinkOpts, ProveOpts, + ProveRawOpts, PruneOpts, ReduceOpts, RunOpts, @@ -37,6 +41,8 @@ from collections.abc import Iterable, Sequence from typing import Final + from pyk.kast.outer import KClaim + from .options import KMirOpts _LOGGER: Final = logging.getLogger(__name__) @@ -99,6 +105,59 @@ def _kmir_prove(opts: ProveOpts) -> None: sys.exit(1) +def _kmir_prove_raw(opts: ProveRawOpts) -> None: + def is_functional(claim: KClaim) -> bool: + claim_lhs = claim.body + if type(claim_lhs) is KRewrite: + claim_lhs = claim_lhs.lhs + return not (type(claim_lhs) is KApply and claim_lhs.label.name == '') + + kmir = KMIR( + definition_dir=kdist.which(opts.haskell_target or 'mir-semantics.haskell'), + llvm_library_dir=kdist.which(opts.llvm_lib_target or 'mir-semantics.llvm-library'), + bug_report=opts.bug_report, + ) + claim_index = kmir.get_claim_index(opts.spec_file) + labels = claim_index.labels(include=opts.include_labels, exclude=opts.exclude_labels) + + def proof_from_claim(claim: KClaim) -> APRProof | EqualityProof: + _LOGGER.info(f'Constructing initial proof: {claim.label}') + if is_functional(claim): + return EqualityProof.from_claim(claim, kmir.definition, proof_dir=opts.proof_dir) + else: + return APRProof.from_claim(kmir.definition, claim, {}, proof_dir=opts.proof_dir) + + def load_proof(claim: KClaim, proof_dir: Path | None, reload: bool) -> APRProof | EqualityProof: + if reload or not proof_dir: + return proof_from_claim(claim) + if (is_functional(claim) and not EqualityProof.proof_data_exists(claim.label, proof_dir)) or ( + not is_functional(claim) and not APRProof.proof_data_exists(claim.label, proof_dir) + ): + return proof_from_claim(claim) + _LOGGER.info(f'Reading proof from disk: {proof_dir}, {label}') + if is_functional(claim): + return EqualityProof.read_proof_data(proof_dir, claim.label) + else: + return APRProof.read_proof_data(proof_dir, claim.label) + + for label in labels: + print(f'Proving {label}') + claim = claim_index[label] + proof = load_proof(claim, opts.proof_dir, opts.reload) + with kmir.kcfg_explore(label) as kcfg_explore: + prover: Prover + if is_functional(claim): + assert type(proof) is EqualityProof + prover = ImpliesProver(proof, kcfg_explore, assume_defined=True) + prover.advance_proof(proof, max_iterations=opts.max_iterations) + else: + assert type(proof) is APRProof + prover = APRProver(kcfg_explore, execute_depth=opts.max_depth) + prover.advance_proof(proof) + summary = proof.summary + print(f'{summary}') + + def _kmir_view(opts: ViewOpts) -> None: kmir = KMIR( definition_dir=kdist.which(opts.haskell_target or 'mir-semantics.haskell'), @@ -484,6 +543,17 @@ def _arg_parser() -> ArgumentParser: proof_args.add_argument('id', metavar='PROOF_ID', help='The id of the proof to operate on') proof_args.add_argument('--proof-dir', metavar='DIR', help='Proof directory') + prove_raw_parser = command_parser.add_parser( + 'prove', help='Utilities for working with proofs over SMIR', parents=[kcli_args.logging_args, prove_args] + ) + prove_raw_parser.add_argument('input_file', metavar='FILE', help='K File with the spec module') + prove_raw_parser.add_argument( + '--include-labels', metavar='LABELS', help='Comma separated list of claim labels to include' + ) + prove_raw_parser.add_argument( + '--exclude-labels', metavar='LABELS', help='Comma separated list of claim labels to exclude' + ) + display_args = ArgumentParser(add_help=False) display_args.add_argument( '--full-printer', @@ -666,6 +736,18 @@ def _parse_args(ns: Namespace) -> KMirOpts: ) case 'info': return InfoOpts(smir_file=Path(ns.smir_file), types=ns.types) + case 'prove': + proof_dir = Path(ns.proof_dir) + return ProveRawOpts( + spec_file=Path(ns.input_file), + proof_dir=ns.proof_dir, + include_labels=ns.include_labels, + exclude_labels=ns.exclude_labels, + bug_report=ns.bug_report, + max_depth=ns.max_depth, + reload=ns.reload, + max_iterations=ns.max_iterations, + ) case 'show': return ShowOpts( proof_dir=Path(ns.proof_dir), diff --git a/kmir/src/kmir/kast.py b/kmir/src/kmir/kast.py index 7268cf755..9ba3fa376 100644 --- a/kmir/src/kmir/kast.py +++ b/kmir/src/kmir/kast.py @@ -241,6 +241,12 @@ def bool_var(var: KVariable) -> tuple[KInner, Iterable[KInner]]: return term, () +def bytes_var(var: KVariable, num_bytes: int) -> tuple[KInner, Iterable[KInner]]: + size_bytes = KApply('lengthBytes(_)_BYTES-HOOKED_Int_Bytes', (var,)) + constraint = mlEqualsTrue(eqInt(size_bytes, token(num_bytes))) + return var, (constraint,) + + def mk_call_terminator(target: int, arg_count: int) -> KInner: operands = [ KApply( @@ -415,18 +421,43 @@ def _symbolic_value(self, ty: Ty, mutable: bool) -> tuple[KInner, Iterable[KInne new_var, new_constraints, _ = self._symbolic_value(element_type, mutable) elem_vars.append(new_var) elem_constraints += new_constraints - return ( - KApply('Value::Range', (list_of(elem_vars),)), - elem_constraints, - KApply( - 'Metadata', - ( - KApply('staticSize', (token(size),)), - token(0), - KApply('staticSize', (token(size),)), - ), - ), - ) + match self.types.get(element_type): + case UintT(info): + b_var, b_constraints = bytes_var(self._fresh_var('ARG_RANGEINT'), size * info.value) + return ( + KApply( + 'Value::RangeInteger', + ( + token(size), + token(info.value), + token(False), + b_var, + ), + ), + list(elem_constraints) + list(b_constraints), + # TODO: Should be token(size) * len(elem_vars)? + KApply( + 'Metadata', + ( + KApply('staticSize', (token(size),)), + token(0), + KApply('staticSize', (token(size),)), + ), + ), + ) + case other: + return ( + KApply('Value::Range', (list_of(elem_vars),)), + elem_constraints, + KApply( + 'Metadata', + ( + KApply('staticSize', (token(size),)), + token(0), + KApply('staticSize', (token(size),)), + ), + ), + ) case TupleT(components=components): elem_vars = [] diff --git a/kmir/src/kmir/kdist/mir-semantics/intrinsics.md b/kmir/src/kmir/kdist/mir-semantics/intrinsics.md index 8788d9861..c49360ad0 100644 --- a/kmir/src/kmir/kdist/mir-semantics/intrinsics.md +++ b/kmir/src/kmir/kdist/mir-semantics/intrinsics.md @@ -94,10 +94,12 @@ Execution gets stuck (no matching rule) when operands have different types or un ... LOCALS - // Compare values only if types are identical + // Compare values only if types are identical. + // #normalizeValue converts Range([Integer(v,W,false)...]) → RangeInteger so that arrays + // built via rvalueAggregate (Range) and decoded from constants (RangeInteger) compare equal. syntax KItem ::= #execRawEqTyped(Place, Evaluation, MaybeTy, Evaluation, MaybeTy) [seqstrict(2,4)] rule #execRawEqTyped(DEST, VAL1:Value, TY1:Ty, VAL2:Value, TY2:Ty) - => #setLocalValue(DEST, BoolVal(VAL1 ==K VAL2)) + => #setLocalValue(DEST, BoolVal(#normalizeValue(VAL1) ==K #normalizeValue(VAL2))) ... requires TY1 ==K TY2 [preserves-definedness] diff --git a/kmir/src/kmir/kdist/mir-semantics/lemmas/kmir-lemmas.md b/kmir/src/kmir/kdist/mir-semantics/lemmas/kmir-lemmas.md index 121ad10f3..163b2ad9f 100644 --- a/kmir/src/kmir/kdist/mir-semantics/lemmas/kmir-lemmas.md +++ b/kmir/src/kmir/kdist/mir-semantics/lemmas/kmir-lemmas.md @@ -18,6 +18,18 @@ module KMIR-LEMMAS imports RT-DATA ``` + +## Simplifications for Bytes + +```k + rule #Ceil(substrBytes(B, N, M)) => #Top + requires 0 <=Int N andBool N <=Int M andBool M <=Int lengthBytes(B) + [simplification] + + rule substrBytes(_, N, N) => .Bytes requires 0 <=Int N [simplification] + rule substrBytes(B, 0, N) => B requires N ==Int lengthBytes(B) [simplification] +``` + ## Simplifications for lists to avoid spurious branching on error cases in control flow Rewrite rules that look up locals or stack frames require that an index into the respective `List`s in the configuration be within the bounds of the locals list/stack. Therefore, the `size` function on lists needs to be computed. The following simplifications allow for locals and stacks to have concrete values in the beginning but a symbolic rest (of unknown size). diff --git a/kmir/src/kmir/kdist/mir-semantics/rt/data.md b/kmir/src/kmir/kdist/mir-semantics/rt/data.md index 2cc068084..a38de4063 100644 --- a/kmir/src/kmir/kdist/mir-semantics/rt/data.md +++ b/kmir/src/kmir/kdist/mir-semantics/rt/data.md @@ -128,6 +128,7 @@ Constant operands are simply decoded according to their type. ... requires typeInfoVoidType =/=K lookupTy(TY) + [preserves-definedness] // #decodeConstant covers all constant kinds; lookupTy is total ``` Function pointers are zero-sized constants whose `Ty` is a key in the function table instaed of the type table. @@ -318,8 +319,11 @@ These helpers mark down, as we traverse the projection, what `Place` we are curr syntax Context ::= CtxField( VariantIdx, List, Int , Ty ) | CtxFieldUnion( FieldIdx, Value, Ty ) | CtxIndex( List , Int ) // array index constant or has been read before + | CtxRangeIntegerIndex( Bytes, Int, Int, Bool ) // original packed bytes, element index, bit-width, signed | CtxSubslice( List , Int , Int ) // start and end always counted from beginning | CtxPointerOffset( List, Int, Int ) // pointer offset for accessing elements with an offset (Offset, Origin Length) + | CtxRangeIntSubslice( Bytes, Int, Int, Int, Bool ) // original bytes, element-width, start, end (from front), signed + | CtxRangeIntPointerOffset( Bytes, Int, Int, Bool ) // original bytes, element-width, offset, signed | "CtxWrapStruct" // special context adding a singleton Aggregate(0, _) around a value syntax ProjectionElem ::= PointerOffset( Int, Int ) // Same as subslice but coming from BinopOffset injected by us @@ -343,6 +347,21 @@ These helpers mark down, as we traverse the projection, what `Place` we are curr => #buildUpdate(Range(ELEMS[I <- VAL]), CTXS) [preserves-definedness] // valid list indexing checked upon context construction + // RangeInteger: patch one element's worth of bytes back in; unsigned-only for now + rule #buildUpdate(Integer(VAL, _, _), CtxRangeIntegerIndex(ELEMS, IDX, WIDTH, _) CTXS) + => #buildUpdate( + RangeInteger( + lengthBytes(ELEMS) /Int (WIDTH /Int 8), + WIDTH, + false, + substrBytes(ELEMS, 0, IDX *Int (WIDTH /Int 8)) + +Bytes Int2Bytes(WIDTH /Int 8, VAL, LE) + +Bytes substrBytes(ELEMS, (IDX +Int 1) *Int (WIDTH /Int 8), lengthBytes(ELEMS)) + ), + CTXS + ) + [preserves-definedness] + // we don't expect an update to happen on an entire _subslice_ but define a rule for it anyway rule #buildUpdate(Range(INNER), CtxSubslice(ELEMS, START, END) CTXS) => #buildUpdate( Range(updateList(ELEMS, START, INNER)), CTXS) @@ -562,6 +581,36 @@ In case of a `ConstantIndex`, the index is provided as an immediate value, toget andBool isValue(ELEMENTS[#expectUsize(getValue(LOCALS, LOCAL))]) [preserves-definedness] // index checked, valid Int can be read, ELEMENT indexable and writeable or forced + // RangeInteger: index from local; unsigned-only for now (SIGNED always false at construction) + rule #traverseProjection( + DEST, + RangeInteger(LEN, WIDTH, _SIGNED, ELEMS), + projectionElemIndex(local(LOCAL)) PROJS, + CTXTS + ) + => #traverseProjection( + DEST, + Integer( + Bytes2Int( + substrBytes(ELEMS, + #expectUsize(getValue(LOCALS, LOCAL)) *Int (WIDTH /Int 8), + (#expectUsize(getValue(LOCALS, LOCAL)) +Int 1) *Int (WIDTH /Int 8)), + LE, Unsigned), + WIDTH, false), + PROJS, + CtxRangeIntegerIndex(ELEMS, #expectUsize(getValue(LOCALS, LOCAL)), WIDTH, false) CTXTS + ) + ... + + LOCALS + requires 0 <=Int LOCAL andBool LOCAL #traverseProjection( DEST, Range(ELEMENTS), @@ -580,6 +629,26 @@ In case of a `ConstantIndex`, the index is provided as an immediate value, toget andBool isValue(ELEMENTS[OFFSET]) [preserves-definedness] // ELEMENT indexable and writeable or forced + // RangeInteger: constant index from front; unsigned-only for now + rule #traverseProjection( + DEST, + RangeInteger(LEN, WIDTH, _SIGNED, ELEMS), + projectionElemConstantIndex(OFFSET:Int, _MINLEN, false) PROJS, + CTXTS + ) + => #traverseProjection( + DEST, + Integer(Bytes2Int(substrBytes(ELEMS, OFFSET *Int (WIDTH /Int 8), (OFFSET +Int 1) *Int (WIDTH /Int 8)), LE, Unsigned), + WIDTH, false), + PROJS, + CtxRangeIntegerIndex(ELEMS, OFFSET, WIDTH, false) CTXTS + ) + ... + + requires 0 <=Int OFFSET andBool OFFSET #traverseProjection( DEST, Range(ELEMENTS), @@ -599,6 +668,28 @@ In case of a `ConstantIndex`, the index is provided as an immediate value, toget andBool isValue(ELEMENTS[MINLEN -Int OFFSET]) [preserves-definedness] // ELEMENT indexable and writeable or forced + // RangeInteger: constant index from end; unsigned-only for now + rule #traverseProjection( + DEST, + RangeInteger(LEN, WIDTH, _SIGNED, ELEMS), + projectionElemConstantIndex(OFFSET:Int, MINLEN, true) PROJS, // from end + CTXTS + ) + => #traverseProjection( + DEST, + Integer(Bytes2Int(substrBytes(ELEMS, (MINLEN -Int OFFSET) *Int (WIDTH /Int 8), + (MINLEN -Int OFFSET +Int 1) *Int (WIDTH /Int 8)), LE, Unsigned), + WIDTH, false), + PROJS, + CtxRangeIntegerIndex(ELEMS, MINLEN -Int OFFSET, WIDTH, false) CTXTS + ) + ... + + requires 0 I @@ -665,6 +756,68 @@ Similar to `ConstantIndex`, the slice _end_ index may count from the _end_ or t requires 0 <=Int OFFSET andBool OFFSET <=Int size(ELEMENTS) [preserves-definedness] // Offset checked to be in range for ELEMENTS + + // RangeInteger: subslice from front (fromEnd = false) + rule #traverseProjection( + DEST, + RangeInteger(LEN, WIDTH, SIGNED, ELEMS), + projectionElemSubslice(START, END, false) PROJS, + CTXTS + ) + => #traverseProjection( + DEST, + RangeInteger(END -Int START, WIDTH, SIGNED, + substrBytes(ELEMS, START *Int (WIDTH /Int 8), END *Int (WIDTH /Int 8))), + PROJS, + CtxRangeIntSubslice(ELEMS, WIDTH, START, END, SIGNED) CTXTS + ) + ... + + requires 0 <=Int START andBool START <=Int LEN + andBool 0 #traverseProjection( + DEST, + RangeInteger(LEN, WIDTH, SIGNED, ELEMS), + projectionElemSubslice(START, END, true) PROJS, + CTXTS + ) + => #traverseProjection( + DEST, + RangeInteger(LEN -Int START -Int END, WIDTH, SIGNED, + substrBytes(ELEMS, START *Int (WIDTH /Int 8), (LEN -Int END) *Int (WIDTH /Int 8))), + PROJS, + CtxRangeIntSubslice(ELEMS, WIDTH, START, LEN -Int END, SIGNED) CTXTS + ) + ... + + requires 0 <=Int START andBool START <=Int LEN + andBool 0 <=Int END andBool END #traverseProjection( + DEST, + RangeInteger(LEN, WIDTH, SIGNED, ELEMS), + PointerOffset(OFFSET, _ORIGIN_LENGTH) PROJS, + CTXTS + ) + => #traverseProjection( + DEST, + RangeInteger(LEN -Int OFFSET, WIDTH, SIGNED, + substrBytes(ELEMS, OFFSET *Int (WIDTH /Int 8), lengthBytes(ELEMS))), + PROJS, + CtxRangeIntPointerOffset(ELEMS, WIDTH, OFFSET, SIGNED) CTXTS + ) + ... + + requires 0 <=Int OFFSET andBool OFFSET <=Int LEN + andBool OFFSET *Int (WIDTH /Int 8) <=Int lengthBytes(ELEMS) + [preserves-definedness] ``` #### References @@ -694,21 +847,53 @@ An attempt to read more elements than the length of the accessed array is undefi // TODO move these to value.md syntax Bool ::= isRange ( Value ) [function, total] // ------------------------------------------------ - rule isRange(Range(_)) => true + rule isRange(Range(_)) => true + rule isRange(RangeInteger(_, _, _, _)) => true rule isRange( _OTHER ) => false [owise] + // Normalize a Range of unsigned integers to RangeInteger for uniform representation. + // Needed when comparing values that may have been constructed differently + // (rvalueAggregate → Range vs. constant allocation → RangeInteger). + syntax Value ::= #normalizeValue(Value) [function, total] + | #tryNormRangeInt(List, Int, Bytes, List) [function, total] + // args: original-list, element-width, accumulated-bytes, remaining-list + rule #normalizeValue(Range(ListItem(Integer(V, W, false)) REST)) + => #tryNormRangeInt(ListItem(Integer(V, W, false)) REST, W, Int2Bytes(W /Int 8, V, LE), REST) + rule #normalizeValue(V) => V [owise] + + // accumulate: same-width unsigned integer + rule #tryNormRangeInt(ORIG, W, ACC, ListItem(Integer(V, W, false)) REST) + => #tryNormRangeInt(ORIG, W, ACC +Bytes Int2Bytes(W /Int 8, V, LE), REST) + // done: all elements packed — produce RangeInteger + rule #tryNormRangeInt(_, W, ACC, .List) + => RangeInteger(lengthBytes(ACC) /Int (W /Int 8), W, false, ACC) + // fallback: width mismatch or non-Integer element — return original unchanged + rule #tryNormRangeInt(ORIG, _, _, _) => Range(ORIG) [owise] + // staticSize metadata requires an array of suitable length and truncates it - rule #traverseProjection( DEST, Range(ELEMS), .ProjectionElems, CTXTS) ~> #derefTruncate(staticSize(SIZE), PROJS) + rule #traverseProjection(DEST, Range(ELEMS), .ProjectionElems, CTXTS) ~> #derefTruncate(staticSize(SIZE), PROJS) => #traverseProjection(DEST, Range(range(ELEMS, 0, size(ELEMS) -Int SIZE)), PROJS, CTXTS) ... requires 0 <=Int SIZE andBool SIZE <=Int size(ELEMS) [preserves-definedness] // range parameters checked + rule #traverseProjection(DEST, RangeInteger(LEN, WIDTH, SIGNED, ELEMS), .ProjectionElems, CTXTS) ~> #derefTruncate(staticSize(SIZE), PROJS) + => #traverseProjection(DEST, RangeInteger(SIZE, WIDTH, SIGNED, substrBytes(ELEMS, 0, SIZE *Int (WIDTH /Int 8))), PROJS, CTXTS) + ... + + requires 0 <=Int SIZE andBool SIZE <=Int LEN + andBool SIZE *Int (WIDTH /Int 8) <=Int lengthBytes(ELEMS) [preserves-definedness] // range parameters checked // dynamicSize metadata requires an array of suitable length and truncates it rule #traverseProjection( DEST, Range(ELEMS), .ProjectionElems, CTXTS) ~> #derefTruncate(dynamicSize(SIZE), PROJS) => #traverseProjection(DEST, Range(range(ELEMS, 0, size(ELEMS) -Int SIZE)), PROJS, CTXTS) ... requires 0 <=Int SIZE andBool SIZE <=Int size(ELEMS) [preserves-definedness] // range parameters checked + rule #traverseProjection(DEST, RangeInteger(LEN, WIDTH, SIGNED, ELEMS), .ProjectionElems, CTXTS) ~> #derefTruncate(dynamicSize(SIZE), PROJS) + => #traverseProjection(DEST, RangeInteger(SIZE, WIDTH, SIGNED, substrBytes(ELEMS, 0, SIZE *Int (WIDTH /Int 8))), PROJS, CTXTS) + ... + + requires 0 <=Int SIZE andBool SIZE <=Int LEN + andBool SIZE *Int (WIDTH /Int 8) <=Int lengthBytes(ELEMS) [preserves-definedness] // range parameters checked // If an array was projected to but no metadata is available, use the head element rule #traverseProjection( DEST, Range(ListItem(VAL) _:List), .ProjectionElems, CTXTS) ~> #derefTruncate(noMetadataSize, PROJS) => #traverseProjection(DEST, VAL, PROJS, CTXTS) @@ -1221,9 +1406,12 @@ This eliminates any `Deref` projections from the place, and also resolves `Index rule #projectionsFor( .Contexts , PROJS) => PROJS rule #projectionsFor(CtxField(_, _, I, TY) CTXS, PROJS) => #projectionsFor(CTXS, projectionElemField(fieldIdx(I), TY) PROJS) rule #projectionsFor( CtxIndex(_, I) CTXS, PROJS) => #projectionsFor(CTXS, projectionElemConstantIndex(I, 0, false) PROJS) + rule #projectionsFor(CtxRangeIntegerIndex(_, I, _, _) CTXS, PROJS) => #projectionsFor(CTXS, projectionElemConstantIndex(I, 0, false) PROJS) rule #projectionsFor( CtxSubslice(_, I, J) CTXS, PROJS) => #projectionsFor(CTXS, projectionElemSubslice(I, J, false) PROJS) // rule #projectionsFor(CtxPointerOffset(OFFSET, ORIGIN_LENGTH) CTXS, PROJS) => #projectionsFor(CTXS, projectionElemSubslice(OFFSET, ORIGIN_LENGTH, false) PROJS) rule #projectionsFor(CtxPointerOffset( _, OFFSET, ORIGIN_LENGTH) CTXS, PROJS) => #projectionsFor(CTXS, PointerOffset(OFFSET, ORIGIN_LENGTH) PROJS) + rule #projectionsFor(CtxRangeIntSubslice(_, _, START, END, _) CTXS, PROJS) => #projectionsFor(CTXS, projectionElemSubslice(START, END, false) PROJS) + rule #projectionsFor(CtxRangeIntPointerOffset(_, _, OFFSET, _) CTXS, PROJS) => #projectionsFor(CTXS, PointerOffset(OFFSET, 0) PROJS) rule #projectionsFor(CtxFieldUnion(F_IDX, _, TY) CTXS, PROJS) => #projectionsFor(CTXS, projectionElemField(F_IDX, TY) PROJS) rule #projectionsFor( CtxWrapStruct CTXS, PROJS) => #projectionsFor(CTXS, projectionElemWrapStruct PROJS) @@ -1873,6 +2061,7 @@ For allocated constants without provenance, the decoder works directly with the => #decodeValue(BYTES, TYPEINFO) ... + [preserves-definedness] // #decodeValue is total (has [owise] fallback) ``` Zero-sized types can be decoded trivially into their respective representation. diff --git a/kmir/src/kmir/kdist/mir-semantics/rt/decoding.md b/kmir/src/kmir/kdist/mir-semantics/rt/decoding.md index 98b522012..06f8f79c4 100644 --- a/kmir/src/kmir/kdist/mir-semantics/rt/decoding.md +++ b/kmir/src/kmir/kdist/mir-semantics/rt/decoding.md @@ -461,8 +461,25 @@ results. syntax Value ::= #decodeArrayAllocation ( Bytes, TypeInfo, Int ) [function] // bytes, element type info, array length, type map (for recursion) + // non-integer element type (arrays, structs, etc.) rule #decodeArrayAllocation(BYTES, ELEMTYPEINFO, LEN) => Range(#decodeArrayElements(BYTES, ELEMTYPEINFO, LEN, .List)) + requires notBool #isIntType(ELEMTYPEINFO) + [preserves-definedness] + + // signed integer element type — #intTypeOf is only called when #isIntType is true + rule #decodeArrayAllocation(BYTES, ELEMTYPEINFO, LEN) + => Range(#decodeArrayElements(BYTES, ELEMTYPEINFO, LEN, .List)) + requires #isIntType(ELEMTYPEINFO) + andBool notBool isUintTy(#intTypeOf(ELEMTYPEINFO)) + [preserves-definedness] + + rule #decodeArrayAllocation(BYTES, ELEMTYPEINFO, _LEN) + => RangeInteger(lengthBytes(BYTES) /Int #elemSize(ELEMTYPEINFO), #bitWidth(#intTypeOf(ELEMTYPEINFO)), false, BYTES) + requires #isIntType(ELEMTYPEINFO) + andBool isUintTy(#intTypeOf(ELEMTYPEINFO)) + andBool lengthBytes(BYTES) %Int #elemSize(ELEMTYPEINFO) ==Int 0 + [preserves-definedness] syntax List ::= #decodeArrayElements ( Bytes, TypeInfo, Int, List ) [function] // bytes, elem type info, remaining length, accumulated list @@ -497,6 +514,14 @@ by the element size, then uses the same element-by-element decoding approach as ```k syntax Value ::= #decodeSliceAllocation ( Bytes, TypeInfo ) [function] // ------------------------------------------------------------------- + rule #decodeSliceAllocation(BYTES, ELEMTYPEINFO) + => RangeInteger(lengthBytes(BYTES) /Int #elemSize(ELEMTYPEINFO), #bitWidth(#intTypeOf(ELEMTYPEINFO)), false, BYTES) + requires #isIntType(ELEMTYPEINFO) + andBool isUintTy(#intTypeOf(ELEMTYPEINFO)) + andBool lengthBytes(BYTES) %Int #elemSize(ELEMTYPEINFO) ==Int 0 + andBool 0 Range(#decodeArrayElements( BYTES, @@ -505,7 +530,8 @@ by the element size, then uses the same element-by-element decoding approach as .List ) ) - requires lengthBytes(BYTES) %Int #elemSize(ELEMTYPEINFO) ==Int 0 // element size divides cleanly + requires notBool (#isIntType(ELEMTYPEINFO) andBool isUintTy(#intTypeOf(ELEMTYPEINFO))) + andBool lengthBytes(BYTES) %Int #elemSize(ELEMTYPEINFO) ==Int 0 // element size divides cleanly andBool 0 None: + self.spec_file = spec_file + self.proof_dir = Path(proof_dir).resolve() if proof_dir is not None else None + self.include_labels = tuple(include_labels.split(',')) if include_labels is not None else None + self.exclude_labels = tuple(exclude_labels.split(',')) if exclude_labels is not None else None + self.bug_report = bug_report + self.haskell_target = None + self.llvm_lib_target = None + self.max_depth = max_depth + self.max_iterations = max_iterations + self.reload = reload + + @dataclass class DisplayOpts(ProofOpts): full_printer: bool diff --git a/kmir/src/kmir/value.py b/kmir/src/kmir/value.py index e1374422c..344ca033d 100644 --- a/kmir/src/kmir/value.py +++ b/kmir/src/kmir/value.py @@ -1,10 +1,12 @@ from __future__ import annotations +import struct from abc import ABC, abstractmethod from dataclasses import dataclass from typing import TYPE_CHECKING, NewType from pyk.kast.inner import KApply +from pyk.kast.prelude.bytes import bytesToken from pyk.kast.prelude.collections import list_of from pyk.kast.prelude.kbool import boolToken from pyk.kast.prelude.kint import intToken @@ -69,6 +71,25 @@ def __init__(self, elems: Iterable[Value]): self.elems = tuple(elems) def to_kast(self) -> KInner: + if len(self.elems) > 0 and all(isinstance(e, IntValue) and not e.signed for e in self.elems): + int_vals = [e for e in self.elems if isinstance(e, IntValue)] + bit_width = int_vals[0].nbits + if ( + bit_width % 8 == 0 + and all(e.nbits == bit_width for e in int_vals) + and all(0 <= e.value and e.value < 2**bit_width for e in int_vals) + ): + byte_width = int(bit_width / 8) + fmts = {1: ' ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Integer ( 0 , 8 , false ) ) - ListItem ( Integer ( 1 , 8 , false ) ) - ListItem ( Integer ( 2 , 8 , false ) ) - ListItem ( Integer ( 3 , 8 , false ) ) - ListItem ( Integer ( 4 , 8 , false ) ) - ListItem ( Integer ( 5 , 8 , false ) ) - ListItem ( Integer ( 6 , 8 , false ) ) - ListItem ( Integer ( 7 , 8 , false ) ) - ListItem ( Integer ( 8 , 8 , false ) ) - ListItem ( Integer ( 9 , 8 , false ) ) - ListItem ( Integer ( 10 , 8 , false ) ) - ListItem ( Integer ( 11 , 8 , false ) ) - ListItem ( Integer ( 12 , 8 , false ) ) - ListItem ( Integer ( 13 , 8 , false ) ) - ListItem ( Integer ( 14 , 8 , false ) ) - ListItem ( Integer ( 15 , 8 , false ) ) - ListItem ( Integer ( 16 , 8 , false ) ) - ListItem ( Integer ( 17 , 8 , false ) ) - ListItem ( Integer ( 18 , 8 , false ) ) - ListItem ( Integer ( 19 , 8 , false ) ) - ListItem ( Integer ( 20 , 8 , false ) ) - ListItem ( Integer ( 21 , 8 , false ) ) - ListItem ( Integer ( 22 , 8 , false ) ) - ListItem ( Integer ( 23 , 8 , false ) ) - ListItem ( Integer ( 24 , 8 , false ) ) - ListItem ( Integer ( 25 , 8 , false ) ) - ListItem ( Integer ( 26 , 8 , false ) ) - ListItem ( Integer ( 27 , 8 , false ) ) - ListItem ( Integer ( 28 , 8 , false ) ) - ListItem ( Integer ( 29 , 8 , false ) ) - ListItem ( Integer ( 30 , 8 , false ) ) - ListItem ( Integer ( 31 , 8 , false ) ) ) ) ) , ty ( 30 ) , mutabilityNot ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( RangeInteger ( 32 , 8 , false , b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" ) ) ) , ty ( 30 ) , mutabilityNot ) ) ListItem ( typedValue ( Integer ( 32 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 31 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 32 ) , 0 , noMetadataSize ) ) , ty ( 27 ) , mutabilityNot ) ) ListItem ( typedValue ( Integer ( 32 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) diff --git a/kmir/src/tests/integration/data/proving/functional-spec.k b/kmir/src/tests/integration/data/proving/functional-spec.k new file mode 100644 index 000000000..884db98f5 --- /dev/null +++ b/kmir/src/tests/integration/data/proving/functional-spec.k @@ -0,0 +1,19 @@ +module FUNCTIONAL-SPEC + imports KMIR + + // claim [substrBytes-empty]: + // RangeInteger(0, 1, false, substrBytes(ARG_RANGEINT228:Bytes, 0, 0)) + // => RangeInteger(0, 1, false, .Bytes) + // requires 8 ==Int lengthBytes ( ARG_RANGEINT228 ) + + // claim [substrBytes-entire]: + // RangeInteger(0, 1, false, substrBytes(ARG_RANGEINT228:Bytes, 0, 8)) + // => RangeInteger(0, 1, false, ARG_RANGEINT228) + // requires 8 ==K lengthBytes ( ARG_RANGEINT228 ) + + claim [substrBytes-entire]: + substrBytes(ARG_RANGEINT228:Bytes, 0, 8) => ARG_RANGEINT228 ... + requires 8 ==Int lengthBytes ( ARG_RANGEINT228 ) + +endmodule + diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-0.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-0.expected index c8bee9fef..ed7afb5bc 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-0.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-0.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 207 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 207 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 207 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 207 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 155 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 244 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 183 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 111 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 71 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 144 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 71 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 207 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 155 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 244 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 183 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 111 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 71 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 144 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 71 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xcf\x9b\xf4\xb7oG\x90G" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xcf\x9b\xf4\xb7oG\x90G" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -82,14 +68,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( -341142443 , 32 , true ) ) ListItem ( Integer ( 48424546 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 207 , 8 , false ) ) - ListItem ( Integer ( 155 , 8 , false ) ) - ListItem ( Integer ( 244 , 8 , false ) ) - ListItem ( Integer ( 183 , 8 , false ) ) - ListItem ( Integer ( 111 , 8 , false ) ) - ListItem ( Integer ( 71 , 8 , false ) ) - ListItem ( Integer ( 144 , 8 , false ) ) - ListItem ( Integer ( 71 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xcf\x9b\xf4\xb7oG\x90G" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 6 ) , 0 , dynamicSize ( 6 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -116,27 +95,19 @@ ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 207 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 207 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 155 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 244 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 183 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 111 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 71 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 144 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 71 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xcf\x9b\xf4\xb7oG\x90G" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 207 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 207 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 207 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -156,14 +127,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( -341142443 , 32 , true ) ) ListItem ( Integer ( 48424546 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 207 , 8 , false ) ) - ListItem ( Integer ( 155 , 8 , false ) ) - ListItem ( Integer ( 244 , 8 , false ) ) - ListItem ( Integer ( 183 , 8 , false ) ) - ListItem ( Integer ( 111 , 8 , false ) ) - ListItem ( Integer ( 71 , 8 , false ) ) - ListItem ( Integer ( 144 , 8 , false ) ) - ListItem ( Integer ( 71 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xcf\x9b\xf4\xb7oG\x90G" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 6 ) , 0 , dynamicSize ( 6 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 1727289611 , 32 , true ) ) ListItem ( Integer ( -815409959 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-1.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-1.expected index 50fb59617..8e9e70830 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-1.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-1.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 32 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 32 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 32 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 32 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 130 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 60 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 253 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 230 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 241 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 194 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 107 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 32 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 130 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 60 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 253 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 230 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 241 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 194 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 107 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b" \x82<\xfd\xe6\xf1\xc2k" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b" \x82<\xfd\xe6\xf1\xc2k" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -81,14 +67,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 32 , 8 , false ) ) - ListItem ( Integer ( 130 , 8 , false ) ) - ListItem ( Integer ( 60 , 8 , false ) ) - ListItem ( Integer ( 253 , 8 , false ) ) - ListItem ( Integer ( 230 , 8 , false ) ) - ListItem ( Integer ( 241 , 8 , false ) ) - ListItem ( Integer ( 194 , 8 , false ) ) - ListItem ( Integer ( 107 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b" \x82<\xfd\xe6\xf1\xc2k" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 6 ) , 0 , dynamicSize ( 6 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -114,27 +93,19 @@ ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 32 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 32 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 130 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 60 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 253 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 230 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 241 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 194 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 107 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b" \x82<\xfd\xe6\xf1\xc2k" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 32 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 32 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 32 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -153,14 +124,7 @@ ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ) ) ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 32 , 8 , false ) ) - ListItem ( Integer ( 130 , 8 , false ) ) - ListItem ( Integer ( 60 , 8 , false ) ) - ListItem ( Integer ( 253 , 8 , false ) ) - ListItem ( Integer ( 230 , 8 , false ) ) - ListItem ( Integer ( 241 , 8 , false ) ) - ListItem ( Integer ( 194 , 8 , false ) ) - ListItem ( Integer ( 107 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b" \x82<\xfd\xe6\xf1\xc2k" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 6 ) , 0 , dynamicSize ( 6 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -52155262 , 32 , true ) ) ListItem ( Integer ( -473267571 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-2.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-2.expected index 66dbadacc..aaa4e1d8f 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-2.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-2.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 46 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 46 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 46 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 46 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 43 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 184 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 86 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 157 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 128 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 108 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 18 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 46 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 43 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 184 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 86 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 157 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 128 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 108 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 18 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b".+\xb8V\x9d\x80l\x12" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b".+\xb8V\x9d\x80l\x12" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -81,14 +67,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 46 , 8 , false ) ) - ListItem ( Integer ( 43 , 8 , false ) ) - ListItem ( Integer ( 184 , 8 , false ) ) - ListItem ( Integer ( 86 , 8 , false ) ) - ListItem ( Integer ( 157 , 8 , false ) ) - ListItem ( Integer ( 128 , 8 , false ) ) - ListItem ( Integer ( 108 , 8 , false ) ) - ListItem ( Integer ( 18 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b".+\xb8V\x9d\x80l\x12" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 10 ) , 0 , dynamicSize ( 10 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -114,27 +93,19 @@ ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 46 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 46 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 43 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 184 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 86 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 157 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 128 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 108 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 18 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b".+\xb8V\x9d\x80l\x12" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 46 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 46 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 46 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -153,14 +124,7 @@ ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ) ) ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 46 , 8 , false ) ) - ListItem ( Integer ( 43 , 8 , false ) ) - ListItem ( Integer ( 184 , 8 , false ) ) - ListItem ( Integer ( 86 , 8 , false ) ) - ListItem ( Integer ( 157 , 8 , false ) ) - ListItem ( Integer ( 128 , 8 , false ) ) - ListItem ( Integer ( 108 , 8 , false ) ) - ListItem ( Integer ( 18 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b".+\xb8V\x9d\x80l\x12" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 10 ) , 0 , dynamicSize ( 10 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 2146275893 , 32 , true ) ) ListItem ( Integer ( 594729871 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-3.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-3.expected index d408600a9..27426e98b 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-3.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-3.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 66 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 66 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 66 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 66 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 189 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 242 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 33 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 6 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 132 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 119 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 66 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 189 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 242 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 33 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 6 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 132 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 119 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"B\xbd\xf2!\x06\xf0\x84w" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"B\xbd\xf2!\x06\xf0\x84w" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -81,14 +67,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 66 , 8 , false ) ) - ListItem ( Integer ( 189 , 8 , false ) ) - ListItem ( Integer ( 242 , 8 , false ) ) - ListItem ( Integer ( 33 , 8 , false ) ) - ListItem ( Integer ( 6 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 132 , 8 , false ) ) - ListItem ( Integer ( 119 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"B\xbd\xf2!\x06\xf0\x84w" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 12 ) , 0 , dynamicSize ( 12 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -114,27 +93,19 @@ ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 66 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 66 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 189 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 242 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 33 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 6 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 132 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 119 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"B\xbd\xf2!\x06\xf0\x84w" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 66 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 66 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 66 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -153,14 +124,7 @@ ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ) ) ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 66 , 8 , false ) ) - ListItem ( Integer ( 189 , 8 , false ) ) - ListItem ( Integer ( 242 , 8 , false ) ) - ListItem ( Integer ( 33 , 8 , false ) ) - ListItem ( Integer ( 6 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 132 , 8 , false ) ) - ListItem ( Integer ( 119 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"B\xbd\xf2!\x06\xf0\x84w" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 12 ) , 0 , dynamicSize ( 12 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -101562192 , 32 , true ) ) ListItem ( Integer ( -1500591035 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-4.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-4.expected index 2b6e8720c..c8d7bf77c 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-4.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-4.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 155 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 155 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 155 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 155 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 52 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 202 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 245 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 79 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 46 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 34 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 10 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 155 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 52 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 202 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 245 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 79 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 46 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 34 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 10 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\x9b4\xca\xf5O.\"\n" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\x9b4\xca\xf5O.\"\n" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -81,14 +67,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 155 , 8 , false ) ) - ListItem ( Integer ( 52 , 8 , false ) ) - ListItem ( Integer ( 202 , 8 , false ) ) - ListItem ( Integer ( 245 , 8 , false ) ) - ListItem ( Integer ( 79 , 8 , false ) ) - ListItem ( Integer ( 46 , 8 , false ) ) - ListItem ( Integer ( 34 , 8 , false ) ) - ListItem ( Integer ( 10 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\x9b4\xca\xf5O.\"\n" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 25 ) , 0 , dynamicSize ( 25 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -114,27 +93,19 @@ ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 155 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 155 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 52 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 202 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 245 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 79 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 46 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 34 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 10 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\x9b4\xca\xf5O.\"\n" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 155 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 155 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 155 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -153,14 +124,7 @@ ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ) ) ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 155 , 8 , false ) ) - ListItem ( Integer ( 52 , 8 , false ) ) - ListItem ( Integer ( 202 , 8 , false ) ) - ListItem ( Integer ( 245 , 8 , false ) ) - ListItem ( Integer ( 79 , 8 , false ) ) - ListItem ( Integer ( 46 , 8 , false ) ) - ListItem ( Integer ( 34 , 8 , false ) ) - ListItem ( Integer ( 10 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\x9b4\xca\xf5O.\"\n" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 25 ) , 0 , dynamicSize ( 25 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -1894737466 , 32 , true ) ) ListItem ( Integer ( -600243533 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-5.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-5.expected index 73d82794e..47187b1a0 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-5.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-5.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 238 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 238 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 238 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 238 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 127 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 26 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 80 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 57 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 190 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 126 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 238 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 127 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 26 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 80 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 57 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 190 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 126 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xee\x7f\x1aP9\xbe\xf0~" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xee\x7f\x1aP9\xbe\xf0~" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -82,14 +68,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 2 ) , ListItem ( Integer ( 130 , 8 , false ) ) ListItem ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 14 , 8 , false ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 238 , 8 , false ) ) - ListItem ( Integer ( 127 , 8 , false ) ) - ListItem ( Integer ( 26 , 8 , false ) ) - ListItem ( Integer ( 80 , 8 , false ) ) - ListItem ( Integer ( 57 , 8 , false ) ) - ListItem ( Integer ( 190 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 126 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xee\x7f\x1aP9\xbe\xf0~" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 24 ) , 0 , dynamicSize ( 24 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -117,27 +96,19 @@ ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 238 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 238 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 127 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 26 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 80 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 57 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 190 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 126 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xee\x7f\x1aP9\xbe\xf0~" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 238 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 238 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 238 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -157,14 +128,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 2 ) , ListItem ( Integer ( 130 , 8 , false ) ) ListItem ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 14 , 8 , false ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 238 , 8 , false ) ) - ListItem ( Integer ( 127 , 8 , false ) ) - ListItem ( Integer ( 26 , 8 , false ) ) - ListItem ( Integer ( 80 , 8 , false ) ) - ListItem ( Integer ( 57 , 8 , false ) ) - ListItem ( Integer ( 190 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 126 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xee\x7f\x1aP9\xbe\xf0~" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 24 ) , 0 , dynamicSize ( 24 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 187951464 , 32 , true ) ) ListItem ( Integer ( 317574981 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-6.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-6.expected index 3a3a93c89..dafb77389 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-6.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-6.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 18 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 18 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 18 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 18 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 0 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 74 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 191 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 163 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 11 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 139 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 18 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 0 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 74 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 191 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 163 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 11 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 139 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\x12\x00J\xf0\xbf\xa3\x0b\x8b" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\x12\x00J\xf0\xbf\xa3\x0b\x8b" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -82,14 +68,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 2 ) , ListItem ( Integer ( 41 , 8 , false ) ) ListItem ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 133 , 8 , false ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 18 , 8 , false ) ) - ListItem ( Integer ( 0 , 8 , false ) ) - ListItem ( Integer ( 74 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 191 , 8 , false ) ) - ListItem ( Integer ( 163 , 8 , false ) ) - ListItem ( Integer ( 11 , 8 , false ) ) - ListItem ( Integer ( 139 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\x12\x00J\xf0\xbf\xa3\x0b\x8b" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 31 ) , 0 , dynamicSize ( 31 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -117,27 +96,19 @@ ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 18 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 18 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 0 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 74 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 240 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 191 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 163 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 11 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 139 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\x12\x00J\xf0\xbf\xa3\x0b\x8b" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 18 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 18 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 18 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -157,14 +128,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 2 ) , ListItem ( Integer ( 41 , 8 , false ) ) ListItem ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 133 , 8 , false ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 18 , 8 , false ) ) - ListItem ( Integer ( 0 , 8 , false ) ) - ListItem ( Integer ( 74 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 191 , 8 , false ) ) - ListItem ( Integer ( 163 , 8 , false ) ) - ListItem ( Integer ( 11 , 8 , false ) ) - ListItem ( Integer ( 139 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\x12\x00J\xf0\xbf\xa3\x0b\x8b" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 31 ) , 0 , dynamicSize ( 31 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 1296717143 , 32 , true ) ) ListItem ( Integer ( 781906281 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-7.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-7.expected index 8bdd69426..43aa22475 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-7.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-7.expected @@ -64,14 +64,7 @@ ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1923567076 , 32 , true ) ) ListItem ( Integer ( -1940095024 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 48 , 8 , false ) ) - ListItem ( Integer ( 187 , 8 , false ) ) - ListItem ( Integer ( 29 , 8 , false ) ) - ListItem ( Integer ( 109 , 8 , false ) ) - ListItem ( Integer ( 19 , 8 , false ) ) - ListItem ( Integer ( 44 , 8 , false ) ) - ListItem ( Integer ( 222 , 8 , false ) ) - ListItem ( Integer ( 214 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"0\xbb\x1dm\x13,\xde\xd6" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 4 ) , 0 , dynamicSize ( 4 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -131,14 +124,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1923567076 , 32 , true ) ) ListItem ( Integer ( -1940095024 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 48 , 8 , false ) ) - ListItem ( Integer ( 187 , 8 , false ) ) - ListItem ( Integer ( 29 , 8 , false ) ) - ListItem ( Integer ( 109 , 8 , false ) ) - ListItem ( Integer ( 19 , 8 , false ) ) - ListItem ( Integer ( 44 , 8 , false ) ) - ListItem ( Integer ( 222 , 8 , false ) ) - ListItem ( Integer ( 214 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"0\xbb\x1dm\x13,\xde\xd6" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 4 ) , 0 , dynamicSize ( 4 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -1113843932 , 32 , true ) ) ListItem ( Integer ( 219246286 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-8.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-8.expected index 056a32057..01c2fef0a 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-8.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-8.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 189 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 189 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 189 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 189 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 192 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 64 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 98 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 22 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 43 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 70 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 126 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 189 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 192 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 64 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 98 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 22 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 43 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 70 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 126 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xbd\xc0@b\x16+F~" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xbd\xc0@b\x16+F~" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -81,14 +67,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 189 , 8 , false ) ) - ListItem ( Integer ( 192 , 8 , false ) ) - ListItem ( Integer ( 64 , 8 , false ) ) - ListItem ( Integer ( 98 , 8 , false ) ) - ListItem ( Integer ( 22 , 8 , false ) ) - ListItem ( Integer ( 43 , 8 , false ) ) - ListItem ( Integer ( 70 , 8 , false ) ) - ListItem ( Integer ( 126 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xbd\xc0@b\x16+F~" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 32 ) , 0 , dynamicSize ( 32 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -114,27 +93,19 @@ ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 189 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 189 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 192 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 64 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 98 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 22 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 43 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 70 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 126 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"\xbd\xc0@b\x16+F~" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 189 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 189 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 189 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -153,14 +124,7 @@ ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ) ) ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 189 , 8 , false ) ) - ListItem ( Integer ( 192 , 8 , false ) ) - ListItem ( Integer ( 64 , 8 , false ) ) - ListItem ( Integer ( 98 , 8 , false ) ) - ListItem ( Integer ( 22 , 8 , false ) ) - ListItem ( Integer ( 43 , 8 , false ) ) - ListItem ( Integer ( 70 , 8 , false ) ) - ListItem ( Integer ( 126 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xbd\xc0@b\x16+F~" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 32 ) , 0 , dynamicSize ( 32 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -1248127672 , 32 , true ) ) ListItem ( Integer ( 609320300 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-9.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-9.expected index 92a082106..3f73910bf 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/final-9.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/final-9.expected @@ -1,21 +1,7 @@ - #traverseProjection ( toStack ( 1 , local ( 30 ) ) , Integer ( 95 , 8 , false ) , PointerOffset ( 1 , 8 ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( Integer ( 95 , 8 , false ) ) , 0 , ty ( 23 ) ) CtxFieldUnion ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 95 , 8 , false ) ) ) , ty ( 74 ) ) CtxIndex ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 95 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 3 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 173 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 237 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 41 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 171 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 20 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 194 , 8 , false ) ) ) ) ) , 0 ) CtxField ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 95 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 3 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 173 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 237 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 41 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 171 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 20 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 194 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + #traverseProjection ( toStack ( 1 , local ( 30 ) ) , thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"_\x03\xad\xed)\xab\x14\xc2" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) , projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems , CtxField ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"_\x03\xad\xed)\xab\x14\xc2" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) , 0 , ty ( 11 ) ) .Contexts ) ~> #derefTruncate ( noMetadataSize , .ProjectionElems ) ~> #readProjection ( false ) ~> #freezer#setLocalValue(_,_)_RT-DATA_KItem_Place_Evaluation1_ ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ~> .K ) ~> #execStmts ( statement (... kind: statementKindStorageDead ( local ( 24 ) ) , span: span ( 299 ) ) statement (... kind: statementKindStorageDead ( local ( 17 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 16 ) ) , span: span ( 277 ) ) statement (... kind: statementKindStorageDead ( local ( 25 ) ) , span: span ( 300 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 15 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 23 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 301 ) ) statement (... kind: statementKindStorageDead ( local ( 15 ) ) , span: span ( 295 ) ) .Statements ) ~> #execTerminator ( terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 5 ) ) , span: span ( 295 ) ) ) ~> .K @@ -63,17 +49,17 @@ ListItem ( typedValue ( Moved , ty ( 3 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 1 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 3 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 50 ) , mutabilityMut ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 15 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 53 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 1 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) + ListItem ( typedValue ( PtrLocal ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) projectionElemConstantIndex (... offset: 0 , minLength: 0 , fromEnd: false ) projectionElemField ( fieldIdx ( 1 ) , ty ( 74 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) , mutabilityNot , metadata ( noMetadataSize , 0 , dynamicSize ( 8 ) ) ) , ty ( 54 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 30 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 11 ) ) .ProjectionElems ) , mutabilityNot , metadata ( staticSize ( 8 ) , 0 , noMetadataSize ) ) , ty ( 57 ) , mutabilityMut ) ) @@ -82,14 +68,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionContinue , ListItem ( newLocal ( ty ( 2 ) , mutabilityMut ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 486255726 , 32 , true ) ) ListItem ( Integer ( -1000150020 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 95 , 8 , false ) ) - ListItem ( Integer ( 3 , 8 , false ) ) - ListItem ( Integer ( 173 , 8 , false ) ) - ListItem ( Integer ( 237 , 8 , false ) ) - ListItem ( Integer ( 41 , 8 , false ) ) - ListItem ( Integer ( 171 , 8 , false ) ) - ListItem ( Integer ( 20 , 8 , false ) ) - ListItem ( Integer ( 194 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"_\x03\xad\xed)\xab\x14\xc2" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 1 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 10 ) , 0 , dynamicSize ( 10 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) @@ -116,27 +95,19 @@ ListItem ( newLocal ( ty ( 23 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 72 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 95 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) + ListItem ( typedValue ( Integer ( 0 , 64 , false ) , ty ( 6 ) , mutabilityMut ) ) ListItem ( typedValue ( Moved , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Range ( ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 95 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 3 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 173 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 237 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 41 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 171 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 20 , 8 , false ) ) ) ) ) - ListItem ( Union ( fieldIdx ( 1 ) , Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 194 , 8 , false ) ) ) ) ) ) ) - ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 2 , 64 , false ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( thunk ( #cast ( RangeInteger ( 8 , 8 , false , b"_\x03\xad\xed)\xab\x14\xc2" ) , castKindTransmute , ty ( 25 ) , ty ( 11 ) ) ) ) + ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1 , 64 , false ) ) ListItem ( Integer ( 8 , 64 , false ) ) ) ) ) , ty ( 24 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 95 , 8 , false ) ) ) , ty ( 55 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 55 ) , mutabilityMut ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 30 ) , projection: .ProjectionElems ) , mutabilityMut , metadata ( noMetadataSize , 0 , noMetadataSize ) ) , ty ( 10 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 69 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 95 , 8 , false ) , ty ( 23 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 95 , 64 , false ) , ty ( 6 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Moved ) - ListItem ( Moved ) ) , ty ( 7 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 4 ) , mutabilityMut ) ) - ListItem ( typedValue ( Moved , ty ( 6 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 69 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 23 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 7 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 4 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 6 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 5 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 28 ) , mutabilityMut ) ) ListItem ( newLocal ( ty ( 31 ) , mutabilityMut ) ) @@ -156,14 +127,7 @@ ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 486255726 , 32 , true ) ) ListItem ( Integer ( -1000150020 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 95 , 8 , false ) ) - ListItem ( Integer ( 3 , 8 , false ) ) - ListItem ( Integer ( 173 , 8 , false ) ) - ListItem ( Integer ( 237 , 8 , false ) ) - ListItem ( Integer ( 41 , 8 , false ) ) - ListItem ( Integer ( 171 , 8 , false ) ) - ListItem ( Integer ( 20 , 8 , false ) ) - ListItem ( Integer ( 194 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"_\x03\xad\xed)\xab\x14\xc2" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 10 ) , 0 , dynamicSize ( 10 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 966648405 , 32 , true ) ) ListItem ( Integer ( -1472498778 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-0.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-0.expected index 7e6b4e60a..045757de7 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-0.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-0.expected @@ -28,14 +28,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( -341142443 , 32 , true ) ) ListItem ( Integer ( 48424546 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 207 , 8 , false ) ) - ListItem ( Integer ( 155 , 8 , false ) ) - ListItem ( Integer ( 244 , 8 , false ) ) - ListItem ( Integer ( 183 , 8 , false ) ) - ListItem ( Integer ( 111 , 8 , false ) ) - ListItem ( Integer ( 71 , 8 , false ) ) - ListItem ( Integer ( 144 , 8 , false ) ) - ListItem ( Integer ( 71 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xcf\x9b\xf4\xb7oG\x90G" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 6 ) , 0 , dynamicSize ( 6 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 1727289611 , 32 , true ) ) ListItem ( Integer ( -815409959 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-1.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-1.expected index 8d4f34f7d..bada6af69 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-1.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-1.expected @@ -27,14 +27,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 32 , 8 , false ) ) - ListItem ( Integer ( 130 , 8 , false ) ) - ListItem ( Integer ( 60 , 8 , false ) ) - ListItem ( Integer ( 253 , 8 , false ) ) - ListItem ( Integer ( 230 , 8 , false ) ) - ListItem ( Integer ( 241 , 8 , false ) ) - ListItem ( Integer ( 194 , 8 , false ) ) - ListItem ( Integer ( 107 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b" \x82<\xfd\xe6\xf1\xc2k" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 6 ) , 0 , dynamicSize ( 6 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -52155262 , 32 , true ) ) ListItem ( Integer ( -473267571 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-2.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-2.expected index 6bbd4c726..bdf758bb8 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-2.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-2.expected @@ -27,14 +27,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 46 , 8 , false ) ) - ListItem ( Integer ( 43 , 8 , false ) ) - ListItem ( Integer ( 184 , 8 , false ) ) - ListItem ( Integer ( 86 , 8 , false ) ) - ListItem ( Integer ( 157 , 8 , false ) ) - ListItem ( Integer ( 128 , 8 , false ) ) - ListItem ( Integer ( 108 , 8 , false ) ) - ListItem ( Integer ( 18 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b".+\xb8V\x9d\x80l\x12" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 10 ) , 0 , dynamicSize ( 10 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 2146275893 , 32 , true ) ) ListItem ( Integer ( 594729871 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-3.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-3.expected index a46aea65e..3f66e19b7 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-3.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-3.expected @@ -27,14 +27,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 66 , 8 , false ) ) - ListItem ( Integer ( 189 , 8 , false ) ) - ListItem ( Integer ( 242 , 8 , false ) ) - ListItem ( Integer ( 33 , 8 , false ) ) - ListItem ( Integer ( 6 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 132 , 8 , false ) ) - ListItem ( Integer ( 119 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"B\xbd\xf2!\x06\xf0\x84w" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 12 ) , 0 , dynamicSize ( 12 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -101562192 , 32 , true ) ) ListItem ( Integer ( -1500591035 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-4.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-4.expected index 77d20383f..9ba226395 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-4.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-4.expected @@ -27,14 +27,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 155 , 8 , false ) ) - ListItem ( Integer ( 52 , 8 , false ) ) - ListItem ( Integer ( 202 , 8 , false ) ) - ListItem ( Integer ( 245 , 8 , false ) ) - ListItem ( Integer ( 79 , 8 , false ) ) - ListItem ( Integer ( 46 , 8 , false ) ) - ListItem ( Integer ( 34 , 8 , false ) ) - ListItem ( Integer ( 10 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\x9b4\xca\xf5O.\"\n" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 25 ) , 0 , dynamicSize ( 25 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -1894737466 , 32 , true ) ) ListItem ( Integer ( -600243533 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-5.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-5.expected index b2eeca22a..73ce2f350 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-5.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-5.expected @@ -28,14 +28,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 2 ) , ListItem ( Integer ( 130 , 8 , false ) ) ListItem ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 14 , 8 , false ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 238 , 8 , false ) ) - ListItem ( Integer ( 127 , 8 , false ) ) - ListItem ( Integer ( 26 , 8 , false ) ) - ListItem ( Integer ( 80 , 8 , false ) ) - ListItem ( Integer ( 57 , 8 , false ) ) - ListItem ( Integer ( 190 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 126 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xee\x7f\x1aP9\xbe\xf0~" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 24 ) , 0 , dynamicSize ( 24 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 187951464 , 32 , true ) ) ListItem ( Integer ( 317574981 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-6.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-6.expected index 175fabdab..0d7d07071 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-6.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-6.expected @@ -28,14 +28,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 2 ) , ListItem ( Integer ( 41 , 8 , false ) ) ListItem ( Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 133 , 8 , false ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 18 , 8 , false ) ) - ListItem ( Integer ( 0 , 8 , false ) ) - ListItem ( Integer ( 74 , 8 , false ) ) - ListItem ( Integer ( 240 , 8 , false ) ) - ListItem ( Integer ( 191 , 8 , false ) ) - ListItem ( Integer ( 163 , 8 , false ) ) - ListItem ( Integer ( 11 , 8 , false ) ) - ListItem ( Integer ( 139 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\x12\x00J\xf0\xbf\xa3\x0b\x8b" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 31 ) , 0 , dynamicSize ( 31 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 1296717143 , 32 , true ) ) ListItem ( Integer ( 781906281 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-7.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-7.expected index d186da3b3..6e038221f 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-7.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-7.expected @@ -28,14 +28,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 1923567076 , 32 , true ) ) ListItem ( Integer ( -1940095024 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 48 , 8 , false ) ) - ListItem ( Integer ( 187 , 8 , false ) ) - ListItem ( Integer ( 29 , 8 , false ) ) - ListItem ( Integer ( 109 , 8 , false ) ) - ListItem ( Integer ( 19 , 8 , false ) ) - ListItem ( Integer ( 44 , 8 , false ) ) - ListItem ( Integer ( 222 , 8 , false ) ) - ListItem ( Integer ( 214 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"0\xbb\x1dm\x13,\xde\xd6" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 4 ) , 0 , dynamicSize ( 4 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -1113843932 , 32 , true ) ) ListItem ( Integer ( 219246286 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-8.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-8.expected index 5a1813338..e4531a490 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-8.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-8.expected @@ -27,14 +27,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 189 , 8 , false ) ) - ListItem ( Integer ( 192 , 8 , false ) ) - ListItem ( Integer ( 64 , 8 , false ) ) - ListItem ( Integer ( 98 , 8 , false ) ) - ListItem ( Integer ( 22 , 8 , false ) ) - ListItem ( Integer ( 43 , 8 , false ) ) - ListItem ( Integer ( 70 , 8 , false ) ) - ListItem ( Integer ( 126 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"\xbd\xc0@b\x16+F~" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 32 ) , 0 , dynamicSize ( 32 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( -1248127672 , 32 , true ) ) ListItem ( Integer ( 609320300 , 32 , true ) ) diff --git a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-9.expected b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-9.expected index edca97d9f..8f7f92716 100644 --- a/kmir/src/tests/integration/data/run-smir-random/complex-types/init-9.expected +++ b/kmir/src/tests/integration/data/run-smir-random/complex-types/init-9.expected @@ -28,14 +28,7 @@ ListItem ( newLocal ( ty ( 0 ) , mutabilityNot ) ) ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , ListItem ( Integer ( 486255726 , 32 , true ) ) ListItem ( Integer ( -1000150020 , 32 , true ) ) ) ) ) , ty ( 68 ) , mutabilityNot ) ) - ListItem ( typedValue ( Range ( ListItem ( Integer ( 95 , 8 , false ) ) - ListItem ( Integer ( 3 , 8 , false ) ) - ListItem ( Integer ( 173 , 8 , false ) ) - ListItem ( Integer ( 237 , 8 , false ) ) - ListItem ( Integer ( 41 , 8 , false ) ) - ListItem ( Integer ( 171 , 8 , false ) ) - ListItem ( Integer ( 20 , 8 , false ) ) - ListItem ( Integer ( 194 , 8 , false ) ) ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( RangeInteger ( 8 , 8 , false , b"_\x03\xad\xed)\xab\x14\xc2" ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 4 ) , projection: .ProjectionElems ) , mutabilityNot , metadata ( dynamicSize ( 10 ) , 0 , dynamicSize ( 10 ) ) ) , ty ( 32 ) , mutabilityNot ) ) ListItem ( typedValue ( Range ( ListItem ( Integer ( 966648405 , 32 , true ) ) ListItem ( Integer ( -1472498778 , 32 , true ) ) diff --git a/kmir/src/tests/integration/test_integration.py b/kmir/src/tests/integration/test_integration.py index a0773a5f2..030909857 100644 --- a/kmir/src/tests/integration/test_integration.py +++ b/kmir/src/tests/integration/test_integration.py @@ -10,11 +10,13 @@ from pyk.cterm.show import CTermShow from pyk.kast.inner import KApply, KSort, KToken from pyk.kast.pretty import PrettyPrinter +from pyk.proof import Proof from pyk.proof.show import APRProofShow +from kmir.__main__ import _kmir_prove_raw from kmir.cargo import CargoProject, cargo_get_smir_json from kmir.kmir import KMIR, KMIRAPRNodePrinter -from kmir.options import ProveOpts, ShowOpts +from kmir.options import ProveOpts, ProveRawOpts, ShowOpts from kmir.parse.parser import Parser from kmir.smir import SMIRInfo from kmir.testing.fixtures import assert_or_update_show_output @@ -25,9 +27,9 @@ from kmir.parse.parser import JSON -PROVE_DIR = (Path(__file__).parent / 'data' / 'prove-rs').resolve(strict=True) -PROVE_FILES = list(PROVE_DIR.glob('*.*')) -PROVE_START_SYMBOLS = { +PROVE_RS_DIR = (Path(__file__).parent / 'data' / 'prove-rs').resolve(strict=True) +PROVE_RS_FILES = list(PROVE_RS_DIR.glob('*.*')) +PROVE_RS_START_SYMBOLS = { 'symbolic-args-fail': ['main', 'eats_all_args'], 'symbolic-structs-fail': ['eats_struct_args'], 'unchecked_arithmetic': ['unchecked_add_i32', 'unchecked_sub_usize', 'unchecked_mul_isize'], @@ -41,7 +43,7 @@ 'iter-eq-copied-take-dereftruncate': ['repro'], 'spl-multisig-iter-eq-copied-next': ['repro'], } -PROVE_SHOW_SPECS = [ +PROVE_RS_SHOW_SPECS = [ 'local-raw-fail', 'interior-mut-fail', 'interior-mut3-fail', @@ -76,12 +78,12 @@ @pytest.mark.parametrize( 'rs_file', - PROVE_FILES, - ids=[spec.stem for spec in PROVE_FILES], + PROVE_RS_FILES, + ids=[spec.stem for spec in PROVE_RS_FILES], ) -def test_prove(rs_file: Path, kmir: KMIR, update_expected_output: bool) -> None: +def test_prove_rs(rs_file: Path, kmir: KMIR, update_expected_output: bool) -> None: should_fail = rs_file.stem.endswith('fail') - should_show = rs_file.stem in PROVE_SHOW_SPECS + should_show = rs_file.stem in PROVE_RS_SHOW_SPECS is_smir = rs_file.suffix == '.json' if update_expected_output and not should_show: @@ -92,8 +94,8 @@ def test_prove(rs_file: Path, kmir: KMIR, update_expected_output: bool) -> None: cterm_show = CTermShow(printer.print) start_symbols = ['main'] - if rs_file.stem in PROVE_START_SYMBOLS: - start_symbols = PROVE_START_SYMBOLS[rs_file.stem] + if rs_file.stem in PROVE_RS_START_SYMBOLS: + start_symbols = PROVE_RS_START_SYMBOLS[rs_file.stem] for start_symbol in start_symbols: prove_opts.start_symbols = [start_symbol] @@ -106,7 +108,7 @@ def test_prove(rs_file: Path, kmir: KMIR, update_expected_output: bool) -> None: shower = APRProofShow(kmir.definition, node_printer=KMIRAPRNodePrinter(cterm_show, apr_proof, display_opts)) show_res = '\n'.join(shower.show(apr_proof)) assert_or_update_show_output( - show_res, PROVE_DIR / f'show/{rs_file.stem}.{start_symbol}.expected', update=update_expected_output + show_res, PROVE_RS_DIR / f'show/{rs_file.stem}.{start_symbol}.expected', update=update_expected_output ) if not should_fail: @@ -662,6 +664,26 @@ def test_prove_termination(test_data: tuple[str, Path], tmp_path: Path, kmir: KM assert proof.passed +PROVING_DIR = (Path(__file__).parent / 'data' / 'proving').resolve(strict=True) +PROVING_FILES = list(PROVING_DIR.glob('*-spec.k')) + + +@pytest.mark.parametrize( + 'spec', + PROVING_FILES, + ids=[spec.stem for spec in PROVING_FILES], +) +def test_prove(spec: Path, tmp_path: Path, kmir: KMIR) -> None: + proof_dir = tmp_path / (spec.stem + 'proofs') + prove_opts = ProveRawOpts(spec, proof_dir=proof_dir) + _kmir_prove_raw(prove_opts) + + claim_labels = kmir.get_claim_index(spec).labels() + for label in claim_labels: + proof = Proof.read_proof_data(proof_dir, label) + assert proof.passed + + SCHEMA_PARSE_DATA = (Path(__file__).parent / 'data' / 'schema-parse').resolve(strict=True) SCHEMA_PARSE_INPUT_DIRS = [ SCHEMA_PARSE_DATA / 'local', @@ -883,7 +905,7 @@ def test_schema_kapply_parse( assert parser.parse_mir_json(json_data, expected_sort.name) == (expected_term, expected_sort) -ARITH_SMIR = PROVE_DIR / 'arith.smir.json' +ARITH_SMIR = PROVE_RS_DIR / 'arith.smir.json' def test_reduce_standalone() -> None: