From e3b06ecd4c344f71410dabfa239f5c441336abff Mon Sep 17 00:00:00 2001 From: ACassimiro Date: Thu, 27 Mar 2025 15:13:07 -0300 Subject: [PATCH 1/2] Revert "Merging master into branch (#512)" This reverts commit 9aa797585647bfc2aa4053acd115a6920479bfa1. --- README.md | 15 +- deps/stable-mir-json | 2 +- kmir/pyproject.toml | 2 +- kmir/src/kmir/__init__.py | 2 +- kmir/src/kmir/kdist/mir-semantics/body.md | 6 +- kmir/src/kmir/kdist/mir-semantics/kmir.md | 108 +- .../kdist/mir-semantics/lemmas/kmir-lemmas.md | 2 + kmir/src/kmir/kdist/mir-semantics/mono.md | 2 +- kmir/src/kmir/kdist/mir-semantics/rt/data.md | 626 +- kmir/src/kmir/parse/notes.md | 2 +- kmir/src/kmir/parse/parser.py | 2 +- .../arithmetic-unchecked-runs.smir.json | 7192 +++++++++-------- .../arithmetic-unchecked-runs.state | 48 +- .../exec-smir/arithmetic/arithmetic.smir.json | 5434 ++++++------- .../exec-smir/arithmetic/arithmetic.state | 54 +- .../data/exec-smir/arithmetic/unary.smir.json | 3770 ++++----- .../data/exec-smir/arithmetic/unary.state | 26 +- .../assign-cast/assign-cast.smir.json | 2162 +---- .../exec-smir/assign-cast/assign-cast.state | 44 +- .../call-with-args/main-a-b-with-int.23.state | 28 +- .../call-with-args/main-a-b-with-int.27.state | 62 - .../main-a-b-with-int.smir.json | 3378 ++++---- .../exec-smir/main-a-b-c/main-a-b-c.19.state | 26 +- .../exec-smir/main-a-b-c/main-a-b-c.run.state | 20 +- .../exec-smir/main-a-b-c/main-a-b-c.smir.json | 1660 +--- .../exec-smir/references/doubleRef.smir.json | 4454 +++++----- .../data/exec-smir/references/doubleRef.state | 36 +- .../exec-smir/references/mutableRef.smir.json | 3440 ++++---- .../exec-smir/references/mutableRef.state | 31 +- .../exec-smir/references/refAsArg.smir.json | 3110 +++---- .../data/exec-smir/references/refAsArg.state | 24 +- .../exec-smir/references/refAsArg2.smir.json | 3188 ++++---- .../data/exec-smir/references/refAsArg2.state | 26 +- .../references/refReturned.smir.json | 3340 ++++---- .../exec-smir/references/refReturned.state | 28 +- .../exec-smir/references/simple.smir.json | 2920 +++---- .../data/exec-smir/references/simple.state | 22 +- .../exec-smir/references/weirdRefs.smir.json | 5054 ++++++------ .../data/exec-smir/references/weirdRefs.state | 59 +- .../struct_field_update.smir.json | 1896 +---- .../structs-tuples/struct_field_update.state | 24 +- .../structs-tuples/structs-tuples.84.state | 46 +- .../structs-tuples/structs-tuples.90.state | 75 - .../structs-tuples/structs-tuples.smir.json | 4112 +++++----- .../data/proving/unchecked-add-spec.k | 75 - .../data/schema-parse/monoitem/input.json | 619 -- .../data/schema-parse/monoitem/reference.kmir | 12 - .../data/schema-parse/monoitem/reference.sort | 1 - .../src/tests/integration/test_integration.py | 31 +- package/version | 2 +- 50 files changed, 25464 insertions(+), 31834 deletions(-) delete mode 100644 kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.27.state delete mode 100644 kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.90.state delete mode 100644 kmir/src/tests/integration/data/proving/unchecked-add-spec.k delete mode 100644 kmir/src/tests/integration/data/schema-parse/monoitem/input.json delete mode 100644 kmir/src/tests/integration/data/schema-parse/monoitem/reference.kmir delete mode 100644 kmir/src/tests/integration/data/schema-parse/monoitem/reference.sort diff --git a/README.md b/README.md index e9312659b..7e3e7eb78 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,9 @@ If you would like to try a legacy version of the project, [this blog post](https ## For Developers -### KMIR Setup +### Setup -Pre-requisites: `python >= 3.10`, `pip >= 20.0.2`, `poetry >= 1.3.2`, `gcc >= 11.4.0`, `cargo == nightly-2024-11-29`, `k >= v7.1.205`. To install K, follow the steps available in [K's Quick Start instructions](https://github.com/runtimeverification/k?tab=readme-ov-file#quick-start). +Pre-requisites: `python >= 3.10`, `pip >= 20.0.2`, `poetry >= 1.3.2`. ```bash make build @@ -23,17 +23,6 @@ Use `make` to run common tasks (see the [Makefile](Makefile) for a complete list For interactive use, spawn a shell with `poetry -C kmir/ shell` (after `poetry -C kmir/ install`), then run an interpreter. Or directly run from `mir-semantics` root with `poetry run -C kmir kmir ` -### Stable-MIR-JSON Setup - -At the moment, to interact with some of KMIR functionalities, it is necessary to provide the tool with a serialized JSON of a Rust program's Stable MIR. To be able to extract these serialized SMIR JSONs, you can use the `Stable-MIR-JSON` tool, setting it up with the following commands: - -```Rust -git submodule update --init --recursive -make stable-mir-json -``` - -For more information on testing, installation, and general usage of this tool, please check [Stable-MIR-JSON's repository](https://github.com/runtimeverification/stable-mir-json/). - ## Usage Use `--help` with each command for more details. diff --git a/deps/stable-mir-json b/deps/stable-mir-json index 463282e2c..fbdfe361d 160000 --- a/deps/stable-mir-json +++ b/deps/stable-mir-json @@ -1 +1 @@ -Subproject commit 463282e2c3abba3db87323c29df19d24c3363dfb +Subproject commit fbdfe361d79a7d125d4ff70fb7c7b354eee483ee diff --git a/kmir/pyproject.toml b/kmir/pyproject.toml index fb8df5298..7e487ea32 100644 --- a/kmir/pyproject.toml +++ b/kmir/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "kmir" -version = "0.3.107" +version = "0.3.103" description = "" authors = [ "Runtime Verification, Inc. ", diff --git a/kmir/src/kmir/__init__.py b/kmir/src/kmir/__init__.py index e69cf1174..cfdb78e48 100644 --- a/kmir/src/kmir/__init__.py +++ b/kmir/src/kmir/__init__.py @@ -1,3 +1,3 @@ from typing import Final -VERSION: Final = '0.3.107' +VERSION: Final = '0.3.103' diff --git a/kmir/src/kmir/kdist/mir-semantics/body.md b/kmir/src/kmir/kdist/mir-semantics/body.md index 32f13531e..4a175b6ec 100644 --- a/kmir/src/kmir/kdist/mir-semantics/body.md +++ b/kmir/src/kmir/kdist/mir-semantics/body.md @@ -5,7 +5,7 @@ requires "ty.md" module BODY-SORTS syntax Body -syntax MaybeBody +syntax Bodies syntax DefId syntax MaybeInt syntax MIRBool @@ -355,10 +355,10 @@ syntax VarDebugInfo ::= varDebugInfo(name: Symbol, sourceInfo: SourceInfo, compo syntax VarDebugInfos ::= List {VarDebugInfo, ""} [group(mir-list), symbol(VarDebugInfos::append), terminator-symbol(VarDebugInfos::empty)] -syntax MaybeBody ::= someBody(Body) [group(mir-option)] - | "noBody" [group(mir-option)] syntax Body ::= body(blocks: BasicBlocks, locals: LocalDecls, argCount: MIRInt, varDebugInfo: VarDebugInfos, spreadArg: MaybeLocal, span: Span) [group(mir---blocks--locals--arg-count--var-debug-info--spread-arg--span)] +syntax Bodies ::= List {Body, ""} + [group(mir-list), symbol(Bodies::append), terminator-symbol(Bodies::empty)] endmodule ``` diff --git a/kmir/src/kmir/kdist/mir-semantics/kmir.md b/kmir/src/kmir/kdist/mir-semantics/kmir.md index d7886dac8..dcf29818e 100644 --- a/kmir/src/kmir/kdist/mir-semantics/kmir.md +++ b/kmir/src/kmir/kdist/mir-semantics/kmir.md @@ -219,7 +219,7 @@ be known to populate the `currentFunc` field. rule #execFunction( monoItem( SYMNAME, - monoItemFn(_, _, someBody(body((FIRST:BasicBlock _) #as BLOCKS,LOCALS, _, _, _, _))) + monoItemFn(_, _, body((FIRST:BasicBlock _) #as BLOCKS,LOCALS, _, _, _, _) .Bodies) ), FUNCTIONNAMES ) @@ -259,7 +259,7 @@ be known to populate the `currentFunc` field. rule #reserveFor(localDecl(TY, _, MUT) REST:LocalDecls) => - ListItem(newLocal(TY, MUT)) #reserveFor(REST) + ListItem(noValue(TY, MUT)) #reserveFor(REST) ``` Executing a function body consists of repeated calls to `#execBlock` @@ -312,12 +312,19 @@ will effectively be no-ops at this level). // all memory accesses relegated to another module (to be added) rule #execStmt(statement(statementKindAssign(PLACE, RVAL), _SPAN)) => - #setLocalValue(PLACE, RVAL) + RVAL ~> #assign(PLACE) ... // RVAL evaluation is implemented in rt/data.md + syntax KItem ::= #assign ( Place ) + + rule VAL:TypedLocal ~> #assign(PLACE) ~> CONT + => + VAL ~> #setLocalValue(PLACE) ~> CONT + + rule #execStmt(statement(statementKindSetDiscriminant(_PLACE, _VARIDX), _SPAN)) => .K // FIXME! write variant index to PLACE @@ -352,9 +359,10 @@ function call, pushing a new stack frame and returning to a different block after the call returns. ```k - rule #execTerminator(terminator(terminatorKindGoto(I), _SPAN)) ~> _CONT + rule #execTerminator(terminator(terminatorKindGoto(I), _SPAN)) => #execBlockIdx(I) + ... // FIXME: We assume this is empty. Explicitly throw away or check that it is? ``` @@ -362,31 +370,31 @@ A `SwitchInt` terminator selects one of the blocks given as _targets_, depending on the value of a _discriminant_. ```k - syntax KItem ::= #selectBlock ( SwitchTargets , Evaluation ) [strict(2)] - rule #execTerminator(terminator(terminatorKindSwitchInt(DISCR, TARGETS), _SPAN)) ~> _CONT => - #selectBlock(TARGETS, DISCR) + #readOperand(DISCR) ~> #selectBlock(TARGETS) - rule #selectBlock(TARGETS, typedValue(Integer(I, _, _), _, _)) + rule typedLocal(Integer(I, _, _), _, _) ~> #selectBlock(TARGETS) => #execBlockIdx(#selectBlock(I, TARGETS)) ... - rule #selectBlock(TARGETS, typedValue(BoolVal(false), _, _)) + rule typedLocal(BoolVal(false), _, _) ~> #selectBlock(TARGETS) => #execBlockIdx(#selectBlock(0, TARGETS)) ... - rule #selectBlock(TARGETS, typedValue(BoolVal(true), _, _)) + rule typedLocal(BoolVal(true), _, _) ~> #selectBlock(TARGETS) => #execBlockIdx(#selectBlock(1, TARGETS)) ... + syntax KItem ::= #selectBlock ( SwitchTargets ) + syntax BasicBlockIdx ::= #selectBlock ( Int , SwitchTargets) [function, total] | #selectBlockAux ( Int, Branches, BasicBlockIdx ) [function, total] @@ -415,12 +423,10 @@ context of the enclosing stack frame, at the _target_. If the returned value is a `Reference`, its stack height must be decremented because a stack frame is popped. NB that a stack height of `0` cannot occur here, because the compiler prevents local variable references from escaping. -If the loval `_0` does not have a value (i.e., it remained uninitialised), the function returns unit and writing the value is skipped. - ```k rule #execTerminator(terminator(terminatorKindReturn, _SPAN)) ~> _ => - #setLocalValue(DEST, #decrementRef(LOCAL0)) ~> #execBlockIdx(TARGET) + #decrementRef(LOCAL0) ~> #setLocalValue(DEST) ~> #execBlockIdx(TARGET) ~> .K _ => CALLER // @@ -429,33 +435,14 @@ If the loval `_0` does not have a value (i.e., it remained uninitialised), the f DEST => NEWDEST someBasicBlockIdx(TARGET) => NEWTARGET _ => UNWIND - ListItem(LOCAL0:TypedValue) _ => NEWLOCALS + ListItem(LOCAL0:TypedLocal) _ => NEWLOCALS // // remaining call stack (without top frame) ListItem(StackFrame(NEWCALLER, NEWDEST, NEWTARGET, UNWIND, NEWLOCALS)) STACK => STACK FUNCS requires CALLER in_keys(FUNCS) - [preserves-definedness] // CALLER lookup defined - - // no value to return, skip writing - rule #execTerminator(terminator(terminatorKindReturn, _SPAN)) ~> _ - => - #execBlockIdx(TARGET) - - _ => CALLER - // - _ => #getBlocks(FUNCS, CALLER) - CALLER => NEWCALLER - _ => NEWDEST - someBasicBlockIdx(TARGET) => NEWTARGET - _ => UNWIND - ListItem(_:NewLocal) _ => NEWLOCALS - // - // remaining call stack (without top frame) - ListItem(StackFrame(NEWCALLER, NEWDEST, NEWTARGET, UNWIND, NEWLOCALS)) STACK => STACK - FUNCS - requires CALLER in_keys(FUNCS) - [preserves-definedness] // CALLER lookup defined + // andBool DEST #within(LOCALS) + [preserves-definedness] // CALLER lookup defined, DEST within locals TODO syntax List ::= #getBlocks(Map, Ty) [function] | #getBlocksAux(MonoItemKind) [function, total] @@ -463,10 +450,11 @@ If the loval `_0` does not have a value (i.e., it remained uninitialised), the f rule #getBlocks(FUNCS, ID) => #getBlocksAux({FUNCS[ID]}:>MonoItemKind) requires ID in_keys(FUNCS) - // returns blocks from the body - rule #getBlocksAux(monoItemFn(_, _, noBody)) => .List - rule #getBlocksAux(monoItemFn(_, _, someBody(body(BLOCKS, _, _, _, _, _)))) => toKList(BLOCKS) - // other item kinds are not expected or supported FIXME: Just getting stuck for now + // returns blocks from the _first_ body if there are several + // TODO handle cases with several blocks + rule #getBlocksAux(monoItemFn(_, _, .Bodies)) => .List + rule #getBlocksAux(monoItemFn(_, _, body(BLOCKS, _, _, _, _, _) _)) => toKList(BLOCKS) + // other item kinds are not expected or supported rule #getBlocksAux(monoItemStatic(_, _, _)) => .List // should not occur in calls at all rule #getBlocksAux(monoItemGlobalAsm(_)) => .List // not supported. FIXME Should error, maybe during #init ``` @@ -487,7 +475,7 @@ The call stack is not necessarily empty at this point so it is left untouched. _ => return(VAL) noBasicBlockIdx - ListItem(typedValue(VAL, _, _)) ... + ListItem(typedLocal(VAL, _, _)) ... ... @@ -498,7 +486,7 @@ The call stack is not necessarily empty at this point so it is left untouched. noBasicBlockIdx - ListItem(newLocal(_, _)) ... + ListItem(noValue(_, _)) ... ... ``` @@ -509,9 +497,10 @@ where the returned result should go. ```k - rule #execTerminator(terminator(terminatorKindCall(FUNC, ARGS, DEST, TARGET, UNWIND), _SPAN)) ~> _ + rule #execTerminator(terminator(terminatorKindCall(FUNC, ARGS, DEST, TARGET, UNWIND), _SPAN)) => #setUpCalleeData({FUNCTIONS[#tyOfCall(FUNC)]}:>MonoItemKind, ARGS) + ... CALLER => #tyOfCall(FUNC) @@ -544,7 +533,7 @@ An operand may be a `Reference` (the only way a function could access another fu // reserve space for local variables and copy/move arguments from old locals into their place rule #setUpCalleeData( - monoItemFn(_, _, someBody(body((FIRST:BasicBlock _) #as BLOCKS, NEWLOCALS, _, _, _, _))), + monoItemFn(_, _, body((FIRST:BasicBlock _) #as BLOCKS, NEWLOCALS, _, _, _, _) _:Bodies), ARGS ) => @@ -562,7 +551,6 @@ An operand may be a `Reference` (the only way a function could access another fu // assumption: arguments stored as _1 .. _n before actual "local" data ... - // TODO: Haven't handled "noBody" case syntax KItem ::= #setArgsFromStack ( Int, Operands) | #setArgFromStack ( Int, Operand) @@ -578,13 +566,13 @@ An operand may be a `Reference` (the only way a function could access another fu rule #setArgFromStack(IDX, operandConstant(_) #as CONSTOPERAND) => - #setLocalValue(place(local(IDX), .ProjectionElems), CONSTOPERAND) + #readOperand(CONSTOPERAND) ~> #setLocalValue(place(local(IDX), .ProjectionElems)) ... rule #setArgFromStack(IDX, operandCopy(place(local(I), .ProjectionElems))) => - #setLocalValue(place(local(IDX), .ProjectionElems), #incrementRef({CALLERLOCALS[I]}:>TypedLocal)) + #incrementRef({CALLERLOCALS[I]}:>TypedLocal) ~> #setLocalValue(place(local(IDX), .ProjectionElems)) ... ListItem(StackFrame(_, _, _, _, CALLERLOCALS)) _:List @@ -596,7 +584,7 @@ An operand may be a `Reference` (the only way a function could access another fu rule #setArgFromStack(IDX, operandMove(place(local(I), .ProjectionElems))) => - #setLocalValue(place(local(IDX), .ProjectionElems), #incrementRef({CALLERLOCALS[I]}:>TypedLocal)) + #incrementRef({CALLERLOCALS[I]}:>TypedLocal) ~> #setLocalValue(place(local(IDX), .ProjectionElems)) ... ListItem(StackFrame(_, _, _, _, CALLERLOCALS => CALLERLOCALS[I <- Moved])) _:List @@ -609,39 +597,25 @@ An operand may be a `Reference` (the only way a function could access another fu ``` The `Assert` terminator checks that an operand holding a boolean value (which has previously been computed, e.g., an overflow flag for arithmetic operations) has the expected value (e.g., that this overflow flag is `false` - a very common case). If the condition value is as expected, the program proceeds with the given `target` block. -Otherwise the provided message is passed to a `panic!` call, ending the program with an error, modelled as an `AssertError` in the semantics. +Otherwise the provided message is passed to a `panic!` call, ending the program with an error, modelled as an `#AssertError` in the semantics. ```k - syntax MIRError ::= AssertError ( AssertMessage ) + syntax KItem ::= #AssertError ( AssertMessage ) rule #execTerminator(terminator(assert(COND, EXPECTED, MSG, TARGET, _UNWIND), _SPAN)) ~> _CONT => - #expect(COND, EXPECTED, MSG) ~> #execBlockIdx(TARGET) + #readOperand(COND) ~> #expect(EXPECTED, MSG) ~> #execBlockIdx(TARGET) - syntax KItem ::= #expect ( Evaluation, Bool, AssertMessage ) [strict(1)] + syntax KItem ::= #expect ( Bool, AssertMessage ) - rule #expect(typedValue(BoolVal(COND), _, _), EXPECTED, _MSG) => .K ... + rule typedLocal(BoolVal(COND), _, _) ~> #expect(EXPECTED, _MSG) => .K ... requires COND ==Bool EXPECTED - rule #expect(typedValue(BoolVal(COND), _, _), EXPECTED, MSG) => AssertError(MSG) ... + rule typedLocal(BoolVal(COND), _, _) ~> #expect(EXPECTED, MSG) => #AssertError(MSG) ... requires COND =/=Bool EXPECTED ``` -### Stopping on Program Errors - -The semantics has a dedicated error sort to stop execution when flawed input or undefined behaviour is detected. -This includes cases of invalid MIR (e.g., accessing non-existing locals in a block or jumping to non-existing blocks), mutation of immutable values, or accessing uninitialised locals, but also user errors such as division by zero or overflowing unchecked arithmetic operations. - -The execution will stop with the respective error information as soon as an error condition is detected. - -```k - syntax KItem ::= #ProgramError ( MIRError ) - - rule [program-error]: - ERR:MIRError => #ProgramError(ERR) ... -``` - ```k endmodule ``` 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 ffe5e10ac..95b98e85d 100644 --- a/kmir/src/kmir/kdist/mir-semantics/lemmas/kmir-lemmas.md +++ b/kmir/src/kmir/kdist/mir-semantics/lemmas/kmir-lemmas.md @@ -48,8 +48,10 @@ Therefore, its value range should be simplified for symbolic input asserted to b requires VAL true + rule hasValue(Moved) => false + rule hasValue(noValue(_, _)) => false + + rule isNoValue(typedLocal(_, _, _)) => false + rule isNoValue(Moved) => false + rule isNoValue(noValue(_, _)) => true + syntax MaybeTy ::= tyOfLocal ( TypedLocal ) [function, total] - // ---------------------------------------------------------- - rule tyOfLocal(typedValue(_, TY, _)) => TY + rule tyOfLocal(typedLocal(_, TY, _)) => TY rule tyOfLocal(Moved) => TyUnknown - rule tyOfLocal(newLocal(TY, _)) => TY - - syntax Mutability ::= mutabilityOf ( TypedLocal ) [function, total] - // ---------------------------------------------------------------- - rule mutabilityOf(typedValue(_, _, MUT)) => MUT - rule mutabilityOf(Moved) => mutabilityNot - rule mutabilityOf(newLocal(_, MUT)) => MUT + rule tyOfLocal(noValue(TY, _)) => TY + + syntax Bool ::= isMutable ( TypedLocal ) [function, total] + rule isMutable(typedLocal(_, _, mutabilityMut)) => true + rule isMutable(typedLocal(_, _, mutabilityNot)) => false + rule isMutable(Moved) => false + rule isMutable(noValue(_, mutabilityMut)) => true + rule isMutable(noValue(_, mutabilityNot)) => false ``` -Access to a `TypedLocal` (whether reading or writing) may fail for a number of reasons. -It is an error to use a `Moved` local in any way, or to read an uninitialised `NewLocal`. -Also, locals are accessed via their index in list `` in a stack frame, which may be out of bounds. -Types are also checked, using the `Ty` (an opaque number assigned by the Stable MIR extraction). +Access to a `TypedLocal` (whether reading or writing( may fail for a number of reasons. +Every access is modelled as a _function_ whose result needs to be checked by the caller. ```k syntax LocalAccessError ::= InvalidLocal ( Local ) - | TypeMismatch( Local, MaybeTy, TypedValue ) + | TypeMismatch( Local, MaybeTy, TypedLocal ) | LocalMoved( Local ) | LocalNotMutable ( Local ) - | LocalUninitialised( Local ) + | "Uninitialised" + | "NoValueToWrite" + | "ValueMoved" + | Unsupported ( String ) // draft code - syntax MIRError ::= LocalAccessError + syntax KItem ::= #LocalError ( LocalAccessError ) endmodule ``` @@ -93,22 +98,10 @@ module RT-DATA imports KMIR-CONFIGURATION ``` -### Evaluating Items to `TypedValue` or `TypedLocal` - -Some built-in operations (`RValue` or type casts) use constructs that will evaluate to a value of sort `TypedValue`. -The basic operations of reading and writing those values can use K's "heating" and "cooling" rules to describe their evaluation. -Other uses of heating and cooling are to _read_ local variables as operands. This may include `Moved` locals or uninitialised `NewLocal`s (as error cases). Therefore we use the supersort `TypedLocal` of `TypedValue` as the `Result` sort. - -```k - syntax Evaluation ::= TypedLocal // other sorts are added at the first use site - - syntax KResult ::= TypedLocal -``` - ### Reading operands (local variables and constants) ```k - syntax Evaluation ::= Operand + syntax KItem ::= #readOperand ( Operand ) ``` _Read_ access to `Operand`s (which may be local values) may have similar errors as write access. @@ -116,9 +109,9 @@ _Read_ access to `Operand`s (which may be local values) may have similar errors Constant operands are simply decoded according to their type. ```k - rule operandConstant(constOperand(_, _, mirConst(KIND, TY, _))) + rule #readOperand(operandConstant(constOperand(_, _, mirConst(KIND, TY, _)))) => - typedValue(#decodeConstant(KIND, {TYPEMAP[TY]}:>RigidTy), TY, mutabilityNot) + typedLocal(#decodeConstant(KIND, {TYPEMAP[TY]}:>RigidTy), TY, mutabilityNot) ... TYPEMAP @@ -135,7 +128,7 @@ Reading a _Copied_ operand means to simply put it in the K sequence. Obviously, local value cannot be read, though, and the value should be initialised. ```k - rule operandCopy(place(local(I), .ProjectionElems)) + rule #readOperand(operandCopy(place(local(I), .ProjectionElems))) => LOCALS[I] ... @@ -143,29 +136,31 @@ local value cannot be read, though, and the value should be initialised. LOCALS requires 0 <=Int I andBool I TypedLocal) [preserves-definedness] // valid list indexing checked - rule operandCopy(place(local(I) #as LOCAL, _)) + rule #readOperand(operandCopy(place(local(I) #as LOCAL, .ProjectionElems))) => - LocalMoved(LOCAL) + #LocalError(LocalMoved(LOCAL)) ... LOCALS - requires 0 <=Int I + requires LOCALS[I] ==K Moved + andBool 0 <=Int I andBool I operandCopy(place(local(I), _)) + rule #readOperand(operandCopy(place(local(I), .ProjectionElems))) => - LocalUninitialised(local(I)) + #LocalError(Uninitialised) ... LOCALS - requires I TypedLocal) + andBool I operandMove(place(local(I), .ProjectionElems)) + rule #readOperand(operandMove(place(local(I), .ProjectionElems))) => LOCALS[I] ... LOCALS => LOCALS[I <- Moved] - requires 0 <=Int I + requires hasValue({LOCALS[I]}:>TypedLocal) + andBool 0 <=Int I andBool I operandMove(place(local(I) #as LOCAL, _)) + rule #readOperand(operandMove(place(local(I) #as LOCAL, .ProjectionElems))) => - LocalMoved(LOCAL) + #LocalError(LocalMoved(LOCAL)) ... LOCALS - requires 0 <=Int I + requires LOCALS[I] ==K Moved + andBool 0 <=Int I andBool I operandMove(place(local(I), _)) + rule #readOperand(operandMove(place(local(I), .ProjectionElems))) => - LocalUninitialised(local(I)) + #LocalError(Uninitialised) ... LOCALS - requires 0 <=Int I + requires isNoValue({LOCALS[I]}:>TypedLocal) + andBool 0 <=Int I andBool I operandCopy(place(local(I), PROJECTIONS)) + rule #readOperand(operandCopy(place(local(I), PROJECTIONS))) => - #readProjection({LOCALS[I]}:>TypedValue, PROJECTIONS) + #readProjection({LOCALS[I]}:>TypedLocal, PROJECTIONS) ... LOCALS requires PROJECTIONS =/=K .ProjectionElems andBool 0 <=Int I andBool I TypedLocal) [preserves-definedness] // valid list indexing checked ``` @@ -238,89 +236,92 @@ Related code currently resides in the value-implementing module. ### Setting local variables (including error cases) -The `#setLocalValue` operation writes a `TypedLocal` value to a given `Place` within the `List` of local variables currently on top of the stack. This may fail because a local may not be accessible, moved away, or not mutable. +The `#setLocalValue` operation writes a `TypedLocal` value preceeding it in the K sequence to a given `Place` within the `List` of local variables currently on top of the stack. This may fail because a local may not be accessible, moved away, or not mutable. ```k - syntax KItem ::= #setLocalValue( Place, Evaluation ) [strict(2)] + syntax KItem ::= #setLocalValue( Place ) // error cases first - rule #setLocalValue( place(local(I) #as LOCAL, _), _) => InvalidLocal(LOCAL) ... + rule _:TypedLocal ~> #setLocalValue( place(local(I) #as LOCAL, _)) => #LocalError(InvalidLocal(LOCAL)) ... LOCALS requires size(LOCALS) <=Int I orBool I #setLocalValue( place(local(I) #as LOCAL, .ProjectionElems), typedValue(_, TY, _) #as VAL) + rule typedLocal(_, TY, _) #as VAL ~> #setLocalValue( place(local(I) #as LOCAL, .ProjectionElems)) => - TypeMismatch(LOCAL, tyOfLocal({LOCALS[I]}:>TypedLocal), VAL) + #LocalError(TypeMismatch(LOCAL, tyOfLocal({LOCALS[I]}:>TypedLocal), VAL)) ... LOCALS - requires 0 <=Int I - andBool I TypedLocal) =/=K TY [preserves-definedness] // list index checked before lookup - // setting a local which was Moved is an error - rule #setLocalValue( place(local(I), .ProjectionElems), _) + // setting a local to Moved is an error + rule _:TypedLocal ~> #setLocalValue( place(local(I), _)) => - LocalMoved(local(I)) + #LocalError(LocalMoved(local(I))) ... LOCALS - requires 0 <=Int I - andBool I #setLocalValue( place(local(I) #as LOCAL, .ProjectionElems), _) + rule typedLocal(_, _, _) ~> #setLocalValue( place(local(I) #as LOCAL, .ProjectionElems)) => - LocalNotMutable(LOCAL) + #LocalError(LocalNotMutable(LOCAL)) ... LOCALS requires I TypedLocal) ==K mutabilityNot + andBool isTypedLocal(LOCALS[I]) + andBool notBool isMutable({LOCALS[I]}:>TypedLocal) // not mutable + andBool notBool isNoValue({LOCALS[I]}:>TypedLocal) // noValue(_, mutabilityNot) is mutable once + + // writing no value is a no-op + rule noValue(_, _) ~> #setLocalValue( _) => .K ... + // FIXME some zero-sized values are not initialised. Otherwise we could use a special value `ZeroSized` here + + // writing a moved value is an error + rule Moved ~> #setLocalValue( _) => #LocalError(ValueMoved) ... // if all is well, write the value - // mutable local - rule #setLocalValue(place(local(I), .ProjectionElems), typedValue(VAL:Value, TY, _ )) + // + rule typedLocal(VAL:Value, TY, _ ) ~> #setLocalValue(place(local(I), .ProjectionElems)) => .K ... - - LOCALS => LOCALS[I <- typedValue(VAL, tyOfLocal({LOCALS[I]}:>TypedLocal), mutabilityMut)] - + LOCALS => LOCALS[I <- typedLocal(VAL, tyOfLocal({LOCALS[I]}:>TypedLocal), mutabilityMut)] requires 0 <=Int I andBool I TypedLocal) ==K mutabilityMut + andBool isTypedLocal(LOCALS[I]) andBool (tyOfLocal({LOCALS[I]}:>TypedLocal) ==K TY orBool TY ==K TyUnknown) // matching or unknown type + andBool isMutable({LOCALS[I]}:>TypedLocal) // mutable [preserves-definedness] // valid list indexing checked // special case for non-mutable uninitialised values: mutable once - rule #setLocalValue(place(local(I), .ProjectionElems), typedValue(VAL:Value, TY, _ )) + rule typedLocal(VAL:Value, TY, _ ) ~> #setLocalValue(place(local(I), .ProjectionElems)) => .K ... - - LOCALS => LOCALS[I <- typedValue(VAL, tyOfLocal({LOCALS[I]}:>TypedLocal), mutabilityOf({LOCALS[I]}:>TypedLocal))] - + LOCALS => LOCALS[I <- typedLocal(VAL, tyOfLocal({LOCALS[I]}:>TypedLocal), mutabilityNot)] requires 0 <=Int I andBool I TypedLocal) ==K TY orBool TY ==K TyUnknown) // matching or unknown type + andBool notBool isMutable({LOCALS[I]}:>TypedLocal) // not mutable but + andBool isNoValue({LOCALS[I]}:>TypedLocal) // not initialised yet [preserves-definedness] // valid list indexing checked ``` ## Evaluation of RValues -The `Rvalue` sort in MIR represents various operations that produce a value which can be assigned to a `Place`. +The `RValue` sort in MIR represents various operations that produce a value which can be assigned to a `Place`. | RValue | Arguments | Action | |----------------|-------------------------------------------------|--------------------------------------| @@ -344,11 +345,9 @@ The `Rvalue` sort in MIR represents various operations that produce a value whic The most basic ones are simply accessing an operand, either directly or by way of a type cast. ```k - syntax Evaluation ::= Rvalue + rule rvalueUse(OPERAND) => #readOperand(OPERAND) ... - rule rvalueUse(OPERAND) => OPERAND ... - - rule rvalueCast(CASTKIND, OPERAND, TY) => #cast(OPERAND, CASTKIND, TY) ... + rule rvalueCast(CASTKIND, OPERAND, TY) => #readOperand(OPERAND) ~> #cast(CASTKIND, TY) ... ``` A number of unary and binary operations exist, (which are dependent on the operand types). @@ -375,7 +374,7 @@ Tuples and structs are built as `Aggregate` values with a list of argument value rule ARGS:List ~> #mkAggregate(_) => - typedValue(Aggregate(ARGS), TyUnknown, mutabilityNot) + typedLocal(Aggregate(ARGS), TyUnknown, mutabilityNot) // NB ty not determined ^^^^^^^^^ ... @@ -392,11 +391,11 @@ Tuples and structs are built as `Aggregate` values with a list of argument value rule #readOperandsAux(ACC, OP:Operand REST) => - OP ~> #readOn(ACC, REST) + #readOperand(OP) ~> #readOn(ACC, REST) ... - rule VAL:TypedValue ~> #readOn(ACC, REST) + rule VAL:TypedLocal ~> #readOn(ACC, REST) => #readOperandsAux(ACC ListItem(VAL), REST) ... @@ -417,7 +416,7 @@ The `BorrowKind` indicates mutability of the value through the reference, but al ```k rule rvalueRef(_REGION, KIND, PLACE) => - typedValue(Reference(0, PLACE, #mutabilityOf(KIND)), TyUnknown, #mutabilityOf(KIND)) + typedLocal(Reference(0, PLACE, #mutabilityOf(KIND)), TyUnknown, #mutabilityOf(KIND)) ... @@ -443,14 +442,7 @@ cast from a `TypedLocal` to another when it is followed by a `#cast` item, rewriting `typedLocal(...) ~> #cast(...) ~> REST` to `typedLocal(...) ~> REST`. ```k - syntax KItem ::= #cast( Evaluation, CastKind, Ty ) [strict(1)] - - syntax MIRError ::= CastError - - syntax CastError ::= UnknownCastTarget ( Ty , Map ) - | UnexpectedCastTarget ( CastKind, RigidTy ) - | UnexpectedCastArgument ( TypedLocal, CastKind ) - | CastNotimplemented ( CastKind ) + syntax KItem ::= #cast( CastKind, Ty ) endmodule ``` @@ -494,6 +486,8 @@ High-level values can be - references to a place in the current or an enclosing stack frame - arrays and slices (with homogenous element types) +**This sort is work in progress and will be extended and modified as we go** + ```k module RT-DATA-HIGH-SYNTAX imports RT-DATA-SYNTAX @@ -614,10 +608,9 @@ bit width, signedness, and possibly truncating or 2s-complementing the value. ```k // int casts - rule #cast(typedValue(Integer(VAL, WIDTH, _SIGNEDNESS), _, MUT), castKindIntToInt, TY) + rule typedLocal(Integer(VAL, WIDTH, _SIGNEDNESS), _, MUT) ~> #cast(castKindIntToInt, TY) ~> CONT => - typedValue(#intAsType(VAL, WIDTH, #numTypeOf({TYPEMAP[TY]}:>RigidTy)), TY, MUT) - ... + typedLocal(#intAsType(VAL, WIDTH, #numTypeOf({TYPEMAP[TY]}:>RigidTy)), TY, MUT) ~> CONT TYPEMAP requires #isIntType({TYPEMAP[TY]}:>RigidTy) @@ -671,7 +664,7 @@ bit width, signedness, and possibly truncating or 2s-complementing the value. requires #bitWidth(INTTYPE) <=Int WIDTH [preserves-definedness] // positive shift, divisor non-zero - // widening: nothing to do: VAL does not change (enough bits to represent, no sign change possible) + // widening: nothing to do: VAL does change (enough bits to represent, no sign change possible) rule #intAsType(VAL, WIDTH, INTTYPE:IntTy) => Integer(VAL, #bitWidth(INTTYPE), true) @@ -698,53 +691,67 @@ Error cases for `castKindIntToInt` * value is not a `Integer` ```k - rule #cast(_, castKindIntToInt, TY) => UnknownCastTarget(TY, TYPEMAP) ... - TYPEMAP + rule (_:TypedLocal ~> #cast(castKindIntToInt, TY) ~> _CONT) #as STUFF + => + #LocalError(Unsupported("Int-to-Int type cast to unknown type")) ~> STUFF + + TYPEMAP + requires notBool isRigidTy(TYPEMAP[TY]) - rule #cast(_, castKindIntToInt, TY) => UnexpectedCastTarget(castKindIntToInt, {TYPEMAP[TY]}:>RigidTy) ... - TYPEMAP + rule (_:TypedLocal ~> #cast(castKindIntToInt, TY) ~> _CONT) #as STUFF + => + #LocalError(Unsupported("Int-to-Int type cast to unexpected non-int type")) ~> STUFF + + TYPEMAP requires notBool (#isIntType({TYPEMAP[TY]}:>RigidTy)) - rule #cast(NONINT, castKindIntToInt, _TY) => UnexpectedCastArgument(NONINT, castKindIntToInt) ... + rule (_:TypedLocal ~> #cast(castKindIntToInt, _TY) ~> _CONT) #as STUFF + => + #LocalError(Unsupported("Int-to-Int type cast of non-int value")) ~> STUFF + [owise] ``` -Other type casts are not implemented yet. + +**TODO** Other type casts are not implemented. ```k - rule #cast(_, CASTKIND, _TY) => CastNotimplemented(CASTKIND)... + rule (_:TypedLocal ~> #cast(CASTKIND, _TY) ~> _CONT) #as STUFF + => + #LocalError(Unsupported("Type casts not implemented")) ~> STUFF + requires CASTKIND =/=K castKindIntToInt [owise] ``` ### Projections on `TypedLocal` values -The implementation of projections (a list `ProjectionElems`) accesses the structure of a stored value and therefore depends on the value representation. Function `#readProjection ( TypedValue , Projectionelems) -> TypedLocal` is therefore implemented in the more specific module that provides a `Value` implementation. +The implementation of projections (a list `ProjectionElems`) accesses the structure of a stored value and therefore depends on the value representation. Function `#readProjection ( TypedLocal , Projectionelems) -> TypedLocal` is therefore implemented in the more specific module that provides a `Value` implementation. #### Reading data from places with projections The `ProjectionElems` list contains a sequence of projections which is applied (left-to-right) to the value in a `TypedLocal` to obtain a derived value or component thereof. The `TypedLocal` argument is there for the purpose of recursion over the projections. We don't expect the operation to apply to an empty projection `.ProjectionElems`, the base case exists for the recursion. ```k - // syntax KItem ::= #readProjection ( TypedValue , ProjectionElems ) - rule #readProjection(VAL, .ProjectionElems) => VAL ... + // syntax KItem ::= #readProjection ( TypedLocal , ProjectionElems ) + rule #readProjection(TL, .ProjectionElems) => TL ... ``` A `Field` access projection operates on `struct`s and tuples, which are represented as `Aggregate` values. The field is numbered from zero (in source order), and the field type is provided (not checked here). ```k rule #readProjection( - typedValue(Aggregate(ARGS), _, _), + typedLocal(Aggregate(ARGS), _, _), projectionElemField(fieldIdx(I), _TY) PROJS ) => - #readProjection({ARGS[I]}:>TypedValue, PROJS) + #readProjection({ARGS[I]}:>TypedLocal, PROJS) ... requires 0 <=Int I andBool I #readProjection( - typedValue(Reference(0, place(local(I:Int), PLACEPROJS:ProjectionElems), _), _, _), + typedLocal(Reference(0, place(local(I:Int), PLACEPROJS:ProjectionElems), _), _, _), projectionElemDeref PROJS:ProjectionElems ) => - #readProjection({LOCALS[I]}:>TypedValue, appendP(PLACEPROJS, PROJS)) + #readProjection({LOCALS[I]}:>TypedLocal, appendP(PLACEPROJS, PROJS)) ... LOCALS requires 0 TAIL @@ -781,25 +786,19 @@ An important prerequisite of this rule is that when passing references to a call ```k rule #readProjection( - typedValue(Reference(FRAME, place(LOCAL:Local, PLACEPROJS), _), _, _), + typedLocal(Reference(FRAME, place(LOCAL:Local, PLACEPROJS), _), _, _), projectionElemDeref PROJS ) => - #readProjection( - {#localFromFrame({STACK[FRAME -Int 1]}:>StackFrame, LOCAL, FRAME)}:>TypedValue, - appendP(PLACEPROJS, PROJS) - ) + #readProjection(#localFromFrame({STACK[FRAME -Int 1]}:>StackFrame, LOCAL, FRAME), appendP(PLACEPROJS, PROJS)) ... STACK requires 0 StackFrame, LOCAL, FRAME)) [preserves-definedness] // valid list indexing checked - // TODO case of MovedLocal and NewLocal - syntax TypedLocal ::= #localFromFrame ( StackFrame, Local, Int ) [function] rule #localFromFrame(StackFrame(... locals: LOCALS), local(I:Int), OFFSET) => #adjustRef({LOCALS[I]}:>TypedLocal, OFFSET) @@ -812,8 +811,8 @@ An important prerequisite of this rule is that when passing references to a call | #decrementRef ( TypedLocal ) [function, total] | #adjustRef (TypedLocal, Int ) [function, total] - rule #adjustRef(typedValue(Reference(HEIGHT, PLACE, REFMUT), TY, MUT), OFFSET) - => typedValue(Reference(HEIGHT +Int OFFSET, PLACE, REFMUT), TY, MUT) + rule #adjustRef(typedLocal(Reference(HEIGHT, PLACE, REFMUT), TY, MUT), OFFSET) + => typedLocal(Reference(HEIGHT +Int OFFSET, PLACE, REFMUT), TY, MUT) rule #adjustRef(TL, _) => TL [owise] rule #incrementRef(TL) => #adjustRef(TL, 1) @@ -841,15 +840,13 @@ The solution is to use rewrite operations in a downward pass through the project syntax Contexts ::= List{Context, ""} rule #buildUpdate(VAL, .Contexts) => VAL - [preserves-definedness] rule #buildUpdate(VAL, CtxField(TY, ARGS, I) CTXS) - => #buildUpdate(typedValue(Aggregate(ARGS[I <- VAL]), TY, mutabilityMut), CTXS) - [preserves-definedness] // valid list indexing checked upon context construction + => #buildUpdate(typedLocal(Aggregate(ARGS[I <- VAL]), TY, mutabilityMut), CTXS) rule #projectedUpdate( DEST, - typedValue(Aggregate(ARGS), TY, MUT), + typedLocal(Aggregate(ARGS), TY, MUT), projectionElemField(fieldIdx(I), _) PROJS, UPDATE, CTXTS, @@ -862,11 +859,11 @@ The solution is to use rewrite operations in a downward pass through the project andBool I #projectedUpdate( _DEST, - typedValue(Reference(OFFSET, place(LOCAL, PLACEPROJ), MUT), _, _), + typedLocal(Reference(OFFSET, place(LOCAL, PLACEPROJ), MUT), _, _), projectionElemDeref PROJS, UPDATE, _CTXTS, @@ -892,7 +889,7 @@ The solution is to use rewrite operations in a downward pass through the project rule #projectedUpdate( _DEST, - typedValue(Reference(OFFSET, place(local(I), PLACEPROJ), MUT), _, _), + typedLocal(Reference(OFFSET, place(local(I), PLACEPROJ), MUT), _, _), projectionElemDeref PROJS, UPDATE, _CTXTS, @@ -918,22 +915,20 @@ The solution is to use rewrite operations in a downward pass through the project rule #projectedUpdate(toLocal(I), _ORIGINAL, .ProjectionElems, NEW, CONTEXTS, false) => - #setLocalValue(place(local(I), .ProjectionElems), #buildUpdate(NEW, CONTEXTS)) + #buildUpdate(NEW, CONTEXTS) ~> #setLocalValue(place(local(I), .ProjectionElems)) ... - [preserves-definedness] // valid conmtext ensured upon context construction rule #projectedUpdate(toLocal(I), _ORIGINAL, .ProjectionElems, NEW, CONTEXTS, true) => - #forceSetLocal(local(I), #buildUpdate(NEW, CONTEXTS)) + #buildUpdate(NEW, CONTEXTS) ~> #forceSetLocal(local(I)) ... - [preserves-definedness] // valid conmtext ensured upon context construction - syntax KItem ::= #forceSetLocal ( Local , TypedLocal ) + syntax KItem ::= #forceSetLocal ( Local ) // #forceSetLocal sets the given value unconditionally (to write Moved values) - rule #forceSetLocal(local(I), VALUE) + rule VALUE:TypedLocal ~> #forceSetLocal(local(I)) => .K ... @@ -962,8 +957,8 @@ The solution is to use rewrite operations in a downward pass through the project andBool I StackFrame(CALLER, DEST, TARGET, UNWIND, LOCALS[I <- typedValue(VAL, tyOfLocal({LOCALS[I]}:>TypedLocal), mutabilityMut)]) + rule #updateStackLocal(StackFrame(CALLER, DEST, TARGET, UNWIND, LOCALS), I, typedLocal(VAL, _, _)) + => StackFrame(CALLER, DEST, TARGET, UNWIND, LOCALS[I <- typedLocal(VAL, tyOfLocal({LOCALS[I]}:>TypedLocal), mutabilityMut)]) requires 0 <=Int I andBool I #setLocalValue(place(local(I), PROJ), VAL) + rule VAL ~> #setLocalValue(place(local(I), PROJ)) => #projectedUpdate(toLocal(I), {LOCALS[I]}:>TypedLocal, PROJ, VAL, .Contexts, false) ... @@ -985,7 +980,7 @@ We could first read the original value using `#readProjection` and compare the t requires 0 <=Int I andBool I operandMove(place(local(I) #as LOCAL, PROJECTIONS)) + rule #readOperand(operandMove(place(local(I) #as LOCAL, PROJECTIONS))) => // read first, then write moved marker (use type from before) - #readProjection({LOCALS[I]}:>TypedValue, PROJECTIONS) ~> + #readProjection({LOCALS[I]}:>TypedLocal, PROJECTIONS) ~> #markMoved({LOCALS[I]}:>TypedLocal, LOCAL, PROJECTIONS) ... @@ -1005,11 +1000,9 @@ Reading `Moved` operands requires a write operation to the read place, too, howe requires PROJECTIONS =/=K .ProjectionElems andBool 0 <=Int I andBool I VAL:TypedLocal ~> #markMoved(OLDLOCAL, local(I), PROJECTIONS) ~> CONT @@ -1034,25 +1027,51 @@ This is specific to Stable MIR, the MIR AST instead uses `WithOverflow` as t For binary operations generally, both arguments have to be read from the provided operands, followed by checking the types and then performing the actual operation (both implemented in `#compute`), which can return a `TypedLocal` or an error. A flag carries the information whether to perform an overflow check through to this function for `CheckedBinaryOp`. ```k - syntax KItem ::= #compute ( BinOp, Evaluation, Evaluation, Bool) [seqstrict(2,3)] + syntax KItem ::= #suspend ( BinOp, Operand, Bool) + | #ready ( BinOp, TypedLocal, Bool ) + | #compute ( BinOp, TypedLocal, TypedLocal, Bool ) [function, total] + + rule rvalueBinaryOp(BINOP, OP1, OP2) + => + #readOperand(OP1) ~> #suspend(BINOP, OP2, false) + ... + - rule rvalueBinaryOp(BINOP, OP1, OP2) => #compute(BINOP, OP1, OP2, false) ... + rule rvalueCheckedBinaryOp(BINOP, OP1, OP2) + => + #readOperand(OP1) ~> #suspend(BINOP, OP2, true) + ... + - rule rvalueCheckedBinaryOp(BINOP, OP1, OP2) => #compute(BINOP, OP1, OP2, true) ... + rule ARG1:TypedLocal ~> #suspend(BINOP, OP2, CHECKFLAG) + => + #readOperand(OP2) ~> #ready(BINOP, ARG1, CHECKFLAG) + ... + + + rule ARG2:TypedLocal ~> #ready(BINOP, ARG1,CHECKFLAG) + => + #compute(BINOP, ARG1, ARG2, CHECKFLAG) + ... + ``` There are also a few _unary_ operations (`UnOpNot`, `UnOpNeg`, `UnOpPtrMetadata`) used in `RValue:UnaryOp`. These operations only read a single operand and do not need a `#suspend` helper. ```k - syntax KItem ::= #applyUnOp ( UnOp , Evaluation ) [strict(2)] + syntax KItem ::= #applyUnOp ( UnOp ) - rule rvalueUnaryOp(UNOP, OP1) => #applyUnOp(UNOP, OP1) ... + rule rvalueUnaryOp(UNOP, OP1) + => + #readOperand(OP1) ~> #applyUnOp(UNOP) + ... + ``` #### Potential errors ```k - syntax MIRError ::= OperationError + syntax KItem ::= #OperationError( OperationError ) syntax OperationError ::= TypeMismatch ( BinOp, Ty, Ty ) | OperandMismatch ( BinOp, Value, Value ) @@ -1060,22 +1079,19 @@ There are also a few _unary_ operations (`UnOpNot`, `UnOpNeg`, `UnOpPtrMetadata` | OperandMismatch ( UnOp, Value ) | OperandError( UnOp, TypedLocal) // errors above are compiler bugs or invalid MIR - | OpNotimplemented ( BinOp, TypedValue, TypedValue) + | Unimplemented ( BinOp, TypedLocal, TypedLocal) // errors below are program errors | "DivisionByZero" - | "Overflow_U_B" - - // catch Moved or uninitialised operands - rule #compute(OP, ARG1, ARG2, _FLAG) => OperandError(OP, ARG1, ARG2) - requires notBool (isTypedValue(ARG1) andBool isTypedValue(ARG2)) + | "Overflow_U_B" // better than getting stuck - rule #applyUnOp(OP, ARG) => OperandError(OP, ARG) - requires notBool isTypedValue(ARG) + // catch pathological cases where ARG1 or ARG2, or both, are Moved or NoValue. + rule #compute(OP, ARG1, ARG2, _FLAG) => #OperationError(OperandError(OP, ARG1, ARG2)) + requires notBool (hasValue(ARG1) andBool hasValue(ARG2)) // catch-all rule to make `#compute` total - rule #compute(OP, ARG1, ARG2, _FLAG) => OpNotimplemented(OP, ARG1, ARG2) - requires isTypedValue(ARG1) - andBool isTypedValue(ARG2) + rule #compute(OP, ARG1, ARG2, _FLAG) + => + #OperationError(Unimplemented(OP, ARG1, ARG2)) [owise] ``` @@ -1122,22 +1138,75 @@ The arithmetic operations require operands of the same numeric type. requires Y =/=Int 0 // operation undefined otherwise - // Checked operations return a pair of the truncated value and an overflow flag - // signed numbers: must check for wrap-around (operation specific) rule #compute( BOP, - typedValue(Integer(ARG1, WIDTH, true), TY, _), //signed - typedValue(Integer(ARG2, WIDTH, true), TY, _), - true) // checked + typedLocal(Integer(ARG1, WIDTH, SIGNEDNESS), TY, _), + typedLocal(Integer(ARG2, WIDTH, SIGNEDNESS), TY, _), + CHK) => - typedValue( + #arithmeticInt(BOP, ARG1, ARG2, WIDTH, SIGNEDNESS, TY, CHK) + requires isArithmetic(BOP) + [preserves-definedness] + + // error cases: + // non-scalar arguments + rule #compute(BOP, typedLocal(ARG1, TY, _), typedLocal(ARG2, TY, _), _) + => + #OperationError(OperandMismatch(BOP, ARG1, ARG2)) + requires isArithmetic(BOP) + [owise] + + // different argument types + rule #compute(BOP, typedLocal(_, TY1, _), typedLocal(_, TY2, _), _) + => + #OperationError(TypeMismatch(BOP, TY1, TY2)) + requires TY1 =/=K TY2 + andBool isArithmetic(BOP) + [owise] + + // helper function to truncate int values + syntax Int ::= truncate(Int, Int, Signedness) [function, total] + // ------------------------------------------------------------- + // unsigned values can be truncated using a simple bitmask + // NB if VAL is negative (underflow), the truncation will yield a positive number + rule truncate(VAL, WIDTH, Unsigned) + => // mask with relevant bits + VAL &Int ((1 < VAL // shortcut when there is nothing to do + requires 0 // bit-based truncation, then establishing the sign by subtracting a bias + (VAL &Int ((1 <=Int (1 < + typedLocal( Aggregate( - ListItem(typedValue(Integer(truncate(onInt(BOP, ARG1, ARG2), WIDTH, Signed), WIDTH, true), TY, mutabilityNot)) + ListItem(typedLocal(Integer(truncate(onInt(BOP, ARG1, ARG2), WIDTH, Signed), WIDTH, true), TY, mutabilityNot)) ListItem( - typedValue( + typedLocal( BoolVal( - // overflow: compare with and without truncation - truncate(onInt(BOP, ARG1, ARG2), WIDTH, Signed) =/=Int onInt(BOP, ARG1, ARG2) + // overflow: Result outside valid range + (1 < - typedValue( + typedLocal( Aggregate( - ListItem(typedValue(Integer(truncate(onInt(BOP, ARG1, ARG2), WIDTH, Unsigned), WIDTH, false), TY, mutabilityNot)) + ListItem(typedLocal(Integer(truncate(onInt(BOP, ARG1, ARG2), WIDTH, Unsigned), WIDTH, false), TY, mutabilityNot)) ListItem( - typedValue( + typedLocal( BoolVal( - // overflow flag: compare to truncated result + // overflow flag: true if infinite precision result is not equal to truncated result truncate(onInt(BOP, ARG1, ARG2), WIDTH, Unsigned) =/=Int onInt(BOP, ARG1, ARG2) ), TyUnknown, @@ -1177,125 +1243,53 @@ The arithmetic operations require operands of the same numeric type. requires isArithmetic(BOP) [preserves-definedness] - // Unchecked operations signal undefined behaviour on overflow. The checks are the same as for the flags above. + // performing unchecked operations may result in undefined behaviour, which we signal. + // The check it the same as the one for the overflow flag above - rule #compute( - BOP, - typedValue(Integer(ARG1, WIDTH, true), TY, _), // signed - typedValue(Integer(ARG2, WIDTH, true), TY, _), - false) // unchecked - => typedValue(Integer(truncate(onInt(BOP, ARG1, ARG2), WIDTH, Signed), WIDTH, true), TY, mutabilityNot) + rule #arithmeticInt(BOP, ARG1, ARG2, WIDTH, true, TY, false) + => typedLocal(Integer(truncate(onInt(BOP, ARG1, ARG2), WIDTH, Signed), WIDTH, true), TY, mutabilityNot) requires isArithmetic(BOP) // infinite precision result must equal truncated result andBool truncate(onInt(BOP, ARG1, ARG2), WIDTH, Signed) ==Int onInt(BOP, ARG1, ARG2) [preserves-definedness] // unsigned numbers: simple overflow check using a bit mask - rule #compute( - BOP, - typedValue(Integer(ARG1, WIDTH, false), TY, _), // unsigned - typedValue(Integer(ARG2, WIDTH, false), TY, _), - false) // unchecked - => typedValue(Integer(truncate(onInt(BOP, ARG1, ARG2), WIDTH, Unsigned), WIDTH, false), TY, mutabilityNot) + rule #arithmeticInt(BOP, ARG1, ARG2, WIDTH, false, TY, false) + => typedLocal(Integer(truncate(onInt(BOP, ARG1, ARG2), WIDTH, Unsigned), WIDTH, false), TY, mutabilityNot) requires isArithmetic(BOP) // infinite precision result must equal truncated result andBool truncate(onInt(BOP, ARG1, ARG2), WIDTH, Unsigned) ==Int onInt(BOP, ARG1, ARG2) [preserves-definedness] - // lower-priority rule to catch undefined behaviour - rule #compute( - BOP, - typedValue(Integer(_, WIDTH, SIGNEDNESS), TY, _), - typedValue(Integer(_, WIDTH, SIGNEDNESS), TY, _), - false) // unchecked - => Overflow_U_B + rule #arithmeticInt(BOP, _, _, _, _, _, false) => #OperationError(Overflow_U_B) requires isArithmetic(BOP) - [priority(60)] + [owise] // These are additional high priority rules to detect/report divbyzero and div/rem overflow/underflow // (the latter can only happen for signed Ints with dividend minInt and divisor -1 - rule #compute(binOpDiv, _, typedValue(Integer(DIVISOR, _, _), _, _), _) + rule #arithmeticInt(binOpDiv, _, DIVISOR, _, _, _, _) => - DivisionByZero + #OperationError(DivisionByZero) requires DIVISOR ==Int 0 [priority(40)] - - rule #compute(binOpRem, _, typedValue(Integer(DIVISOR, _, _), _, _), _) + rule #arithmeticInt(binOpRem, _, DIVISOR, _, _, _, _) => - DivisionByZero + #OperationError(DivisionByZero) requires DIVISOR ==Int 0 [priority(40)] - rule #compute( - binOpDiv, - typedValue(Integer(DIVIDEND, WIDTH, true), TY, _), // signed - typedValue(Integer(DIVISOR, WIDTH, true), TY, _), - _) + rule #arithmeticInt(binOpDiv, DIVIDEND, DIVISOR, WIDTH, true, _, _) => - Overflow_U_B + #OperationError(Overflow_U_B) requires DIVISOR ==Int -1 andBool DIVIDEND ==Int 0 -Int (1 < - Overflow_U_B + #OperationError(Overflow_U_B) requires DIVISOR ==Int -1 andBool DIVIDEND ==Int 0 -Int (1 < - OperandMismatch(BOP, ARG1, ARG2) - requires isArithmetic(BOP) - [owise] - - // different argument types - rule #compute(BOP, typedValue(_, TY1, _), typedValue(_, TY2, _), _) - => - TypeMismatch(BOP, TY1, TY2) - requires TY1 =/=K TY2 - andBool isArithmetic(BOP) - [owise] - - - // helper function to truncate int values - syntax Int ::= truncate(Int, Int, Signedness) [function, total] - // ------------------------------------------------------------- - // unsigned values can be truncated using a simple bitmask - // NB if VAL is negative (underflow), the truncation will yield a positive number - rule truncate(VAL, WIDTH, Unsigned) - => // mask with relevant bits - VAL &Int ((1 < VAL // shortcut when there is nothing to do - requires 0 // if truncated value small enough and positive, all is done - (VAL &Int ((1 < // subtract a bias when the truncation result too large - (VAL &Int ((1 <=Int (1 < cmpOpBool(binOpLe, Y, X) rule cmpOpBool(binOpGt, X, Y) => cmpOpBool(binOpLt, Y, X) - rule #compute(OP, typedValue(_, TY, _), typedValue(_, TY2, _), _) => TypeMismatch(OP, TY, TY2) + rule #compute(OP, typedLocal(_, TY, _), typedLocal(_, TY2, _), _) => #OperationError(TypeMismatch(OP, TY, TY2)) requires isComparison(OP) andBool TY =/=K TY2 - rule #compute(OP, typedValue(Integer(VAL1, WIDTH, SIGN), TY, _), typedValue(Integer(VAL2, WIDTH, SIGN), TY, _), _) + rule #compute(OP, typedLocal(Integer(VAL1, WIDTH, SIGN), TY, _), typedLocal(Integer(VAL2, WIDTH, SIGN), TY, _), _) => - typedValue(BoolVal(cmpOpInt(OP, VAL1, VAL2)), TyUnknown, mutabilityNot) + typedLocal(BoolVal(cmpOpInt(OP, VAL1, VAL2)), TyUnknown, mutabilityNot) requires isComparison(OP) - [preserves-definedness] // OP known to be a comparison - rule #compute(OP, typedValue(BoolVal(VAL1), TY, _), typedValue(BoolVal(VAL2), TY, _), _) + rule #compute(OP, typedLocal(BoolVal(VAL1), TY, _), typedLocal(BoolVal(VAL2), TY, _), _) => - typedValue(BoolVal(cmpOpBool(OP, VAL1, VAL2)), TyUnknown, mutabilityNot) + typedLocal(BoolVal(cmpOpBool(OP, VAL1, VAL2)), TyUnknown, mutabilityNot) requires isComparison(OP) - [preserves-definedness] // OP known to be a comparison - rule #compute(OP, typedValue(ARG1, TY, _), typedValue(ARG2, TY, _), _) + rule #compute(OP, typedLocal(ARG1, TY, _), typedLocal(ARG2, TY, _), _) => - OperandMismatch(OP, ARG1, ARG2) - requires isComparison(OP) + #OperationError(OperandMismatch(OP, ARG1, ARG2)) [owise] ``` @@ -1367,13 +1358,14 @@ The `binOpCmp` operation returns `-1`, `0`, or `+1` (the behaviour of Rust's `st rule cmpBool(X, Y) => 0 requires X ==Bool Y rule cmpBool(X, Y) => 1 requires X andBool notBool Y - rule #compute(binOpCmp, typedValue(Integer(VAL1, WIDTH, SIGN), TY, _), typedValue(Integer(VAL2, WIDTH, SIGN), TY, _), _) + rule #compute(binOpCmp, typedLocal(Integer(VAL1, WIDTH, SIGN), TY, _), typedLocal(Integer(VAL2, WIDTH, SIGN), TY, _), _) => - typedValue(Integer(cmpInt(VAL1, VAL2), 8, true), TyUnknown, mutabilityNot) + typedLocal(Integer(cmpInt(VAL1, VAL2), 8, true), TyUnknown, mutabilityNot) - rule #compute(binOpCmp, typedValue(BoolVal(VAL1), TY, _), typedValue(BoolVal(VAL2), TY, _), _) + rule #compute(binOpCmp, typedLocal(BoolVal(VAL1), TY, _), typedLocal(BoolVal(VAL2), TY, _), _) => - typedValue(Integer(cmpBool(VAL1, VAL2), 8, true), TyUnknown, mutabilityNot) + typedLocal(Integer(cmpBool(VAL1, VAL2), 8, true), TyUnknown, mutabilityNot) + ``` #### Unary operations on Boolean and integral values @@ -1382,9 +1374,9 @@ The `unOpNeg` operation only works signed integral (and floating point) numbers. An overflow can happen when negating the minimal representable integral value (in the given `WIDTH`). The semantics of the operation in this case is to wrap around (with the given bit width). ```k - rule #applyUnOp(unOpNeg, typedValue(Integer(VAL, WIDTH, true), TY, _)) + rule typedLocal(Integer(VAL, WIDTH, true), TY, _) ~> #applyUnOp(unOpNeg) => - typedValue(Integer(truncate(0 -Int VAL, WIDTH, Signed), WIDTH, true), TY, mutabilityNot) + typedLocal(Integer(truncate(0 -Int VAL, WIDTH, Signed), WIDTH, true), TY, mutabilityNot) ... @@ -1394,27 +1386,27 @@ An overflow can happen when negating the minimal representable integral value (i The `unOpNot` operation works on boolean and integral values, with the usual semantics for booleans and a bitwise semantics for integral values (overflows cannot occur). ```k - rule #applyUnOp(unOpNot, typedValue(BoolVal(VAL), TY, _)) + rule typedLocal(BoolVal(VAL), TY, _) ~> #applyUnOp(unOpNot) => - typedValue(BoolVal(notBool VAL), TY, mutabilityNot) + typedLocal(BoolVal(notBool VAL), TY, mutabilityNot) ... - rule #applyUnOp(unOpNot, typedValue(Integer(VAL, WIDTH, true), TY, _)) + rule typedLocal(Integer(VAL, WIDTH, true), TY, _) ~> #applyUnOp(unOpNot) => - typedValue(Integer(truncate(~Int VAL, WIDTH, Signed), WIDTH, true), TY, mutabilityNot) + typedLocal(Integer(truncate(~Int VAL, WIDTH, Signed), WIDTH, true), TY, mutabilityNot) ... - rule #applyUnOp(unOpNot, typedValue(Integer(VAL, WIDTH, false), TY, _)) + rule typedLocal(Integer(VAL, WIDTH, false), TY, _) ~> #applyUnOp(unOpNot) => - typedValue(Integer(truncate(~Int VAL, WIDTH, Unsigned), WIDTH, false), TY, mutabilityNot) + typedLocal(Integer(truncate(~Int VAL, WIDTH, Unsigned), WIDTH, false), TY, mutabilityNot) ... ``` ```k - rule #applyUnOp(OP, typedValue(VAL, _, _)) => OperandMismatch(OP, VAL) ... + rule typedLocal(VAL, _, _) ~> #applyUnOp(OP) => #OperationError(OperandMismatch(OP, VAL)) ... [owise] ``` @@ -1436,7 +1428,7 @@ The `unOpNot` operation works on boolean and integral values, with the usual sem One important use case of `UbChecks` is to determine overflows in unchecked arithmetic operations. Since our arithmetic operations signal undefined behaviour on overflow independently, the value returned by `UbChecks` is `false` for now. ```k - rule rvalueNullaryOp(nullOpUbChecks, _) => typedValue(BoolVal(false), TyUnknown, mutabilityNot) ... + rule rvalueNullaryOp(nullOpUbChecks, _) => typedLocal(BoolVal(false), TyUnknown, mutabilityNot) ... ``` #### "Nullary" operations reifying type information diff --git a/kmir/src/kmir/parse/notes.md b/kmir/src/kmir/parse/notes.md index df79d454f..f242edbef 100644 --- a/kmir/src/kmir/parse/notes.md +++ b/kmir/src/kmir/parse/notes.md @@ -36,7 +36,7 @@ json: an array of integer values between 0 and 255 syntax Elems ::= List {Elem, ""} [group(mir-list), ...] ``` json: a homogeneous list, e.g. `[e1, e2, e3, ...]`, where all elements correspond to syntactic productions for the sort `Elem`. -As per naming convention, the list sort `Elems` (plural) should contain elements of sort `Elem` (singular). Usual plural formation rules (`Branch -> Branches`) are respected. +As per naming convention, the list sort `Elems` (plural) should contain elements of sort `Elem` (singular). Usual plural formation rules (`Body -> Bodies`, `Branch -> Branches`) are respected. #### mir-klist-ElementSort ``` diff --git a/kmir/src/kmir/parse/parser.py b/kmir/src/kmir/parse/parser.py index 453a9becd..4050b0714 100644 --- a/kmir/src/kmir/parse/parser.py +++ b/kmir/src/kmir/parse/parser.py @@ -113,7 +113,7 @@ def _list_symbols(sort: str) -> tuple[str, str]: # Given a list Sort, return the element sort. def _element_sort(sort: KSort) -> KSort: name = sort.name - if name.endswith('ies'): # Entries, ... + if name.endswith('ies'): # Bodies, Entries, ... return KSort(name[:-3] + 'y') elif ( # -es for words ending in 's', 'ch', 'sh', 'ss', 'x' or 'z' name.endswith('ses') diff --git a/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic-unchecked-runs.smir.json b/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic-unchecked-runs.smir.json index 212c5f2aa..0440b6464 100644 --- a/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic-unchecked-runs.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic-unchecked-runs.smir.json @@ -1,3652 +1,3678 @@ { - "name": "arithmetic_unchecked_runs", - "crate_id": 13794361957699792544, - "allocs": [ - [ - 3, - { - "Memory": { - "bytes": [ - 117, - 110, - 115, - 97, - 102, - 101, - 32, - 112, - 114, - 101, - 99, - 111, - 110, - 100, - 105, - 116, - 105, - 111, - 110, - 40, - 115, - 41, - 32, - 118, - 105, - 111, - 108, - 97, - 116, - 101, - 100, - 58, - 32, - 117, - 56, - 58, - 58, - 117, - 110, - 99, - 104, - 101, - 99, - 107, - 101, - 100, - 95, - 97, - 100, - 100, - 32, - 99, - 97, - 110, - 110, - 111, - 116, - 32, - 111, - 118, - 101, - 114, - 102, - 108, - 111, - 119 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Not" - } - } - ], - [ - 2, - { - "Memory": { - "bytes": [ - 117, - 110, - 115, - 97, - 102, - 101, - 32, - 112, - 114, - 101, - 99, - 111, - 110, - 100, - 105, - 116, - 105, - 111, - 110, - 40, - 115, - 41, - 32, - 118, - 105, - 111, - 108, - 97, - 116, - 101, - 100, - 58, - 32, - 105, - 56, - 58, - 58, - 117, - 110, - 99, - 104, - 101, - 99, - 107, - 101, - 100, - 95, - 115, - 117, - 98, - 32, - 99, - 97, - 110, - 110, - 111, - 116, - 32, - 111, - 118, - 101, - 114, - 102, - 108, - 111, - 119 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Not" - } - } - ] - ], - "functions": [ - [ - 31, - { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h37a5a6e2382fe31bE" - } - ], - [ - 38, - { - "NoOpSym": "" - } - ], - [ - 14, - { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbc9b51d6638817bfE" - } - ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hf8317f745557e08aE" - } - ], - [ - 27, - { - "NormalSym": "_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_add18precondition_check17hb3b74e0f4857f64bE" - } - ], - [ - 33, - { - "NormalSym": "_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_add17h57df73ebe1c8a989E" - } - ], - [ - 20, - { - "IntrinsicSym": "black_box" - } - ], - [ - 34, - { - "NormalSym": "_ZN4core3num20_$LT$impl$u20$i8$GT$13unchecked_sub17he4e31a0bf1fa656dE" - } - ], - [ - 23, - { - "NormalSym": "_ZN4core9panicking14panic_nounwind17h3a5ca15c2000251eE" - } - ], - [ - 0, - { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" - } - ], - [ - 22, - { - "NormalSym": "_ZN4core3num20_$LT$impl$u20$i8$GT$13unchecked_sub18precondition_check17h09d11b33245f51d3E" - } - ], - [ - 29, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h8edc29ddf1567ac9E" - } - ], - [ - 19, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hdc30c0db2ed02c63E" - } - ] - ], - "uneval_consts": [], - "items": [ - { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h37a5a6e2382fe31bE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - } - } - ] + "name": "arithmetic_unchecked_runs", + "crate_id": 13794361957699792544, + "allocs": [ + [ + 2, + { + "Memory": { + "bytes": [ + 117, + 110, + 115, + 97, + 102, + 101, + 32, + 112, + 114, + 101, + 99, + 111, + 110, + 100, + 105, + 116, + 105, + 111, + 110, + 40, + 115, + 41, + 32, + 118, + 105, + 111, + 108, + 97, + 116, + 101, + 100, + 58, + 32, + 105, + 56, + 58, + 58, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 95, + 115, + 117, + 98, + 32, + 99, + 97, + 110, + 110, + 111, + 116, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119 + ], + "provenance": { + "ptrs": [] }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 + "align": 1, + "mutability": "Not" } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 + } + ], + [ + 3, + { + "Memory": { + "bytes": [ + 117, + 110, + 115, + 97, + 102, + 101, + 32, + 112, + 114, + 101, + 99, + 111, + 110, + 100, + 105, + 116, + 105, + 111, + 110, + 40, + 115, + 41, + 32, + 118, + 105, + 111, + 108, + 97, + 116, + 101, + 100, + 58, + 32, + 117, + 56, + 58, + 58, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 95, + 97, + 100, + 100, + 32, + 99, + 97, + 110, + 110, + 111, + 116, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119 + ], + "provenance": { + "ptrs": [] }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 + "align": 1, + "mutability": "Not" } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + } + ] + ], + "functions": [ + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hf8317f745557e08aE" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h8edc29ddf1567ac9E" + } + ], + [ + 34, + { + "NormalSym": "_ZN4core3num20_$LT$impl$u20$i8$GT$13unchecked_sub17he4e31a0bf1fa656dE" + } + ], + [ + 23, + { + "NormalSym": "_ZN4core9panicking14panic_nounwind17h3a5ca15c2000251eE" + } + ], + [ + 27, + { + "NormalSym": "_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_add18precondition_check17hb3b74e0f4857f64bE" + } + ], + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbc9b51d6638817bfE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 22, + { + "NormalSym": "_ZN4core3num20_$LT$impl$u20$i8$GT$13unchecked_sub18precondition_check17h09d11b33245f51d3E" + } + ], + [ + 41, + { + "NoOpSym": "" + } + ], + [ + 33, + { + "NormalSym": "_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_add17h57df73ebe1c8a989E" + } + ], + [ + 31, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h37a5a6e2382fe31bE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hdc30c0db2ed02c63E" + } + ] + ], + "uneval_consts": [], + "items": [ + { + "symbol_name": "_ZN3std2rt10lang_start17h665493b8ec74817bE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } + } + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 + } } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, { - "Field": [ - 0, - 15 - ] + "ty": 8, + "span": 11, + "mutability": "Not" }, { - "Field": [ - 0, - 9 - ] + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" } - ] - } - } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 - }, - "span": 27 - } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } ] - } - }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbc9b51d6638817bfE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 9, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 97, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 + } + }, + "details": null + }, + { + "symbol_name": "_ZN25arithmetic_unchecked_runs4main17h1bc17631fcb9d7bbE", + "mono_item_kind": { + "MonoItemFn": { + "name": "main", + "id": 10, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Constant": { + "span": 101, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 14 + } + } + }, + { + "Constant": { + "span": 102, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 14 + } + } + } + ] + } + ] + }, + "span": 103 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 21 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Constant": { + "span": 101, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 14 + } + } + }, + { + "Constant": { + "span": 102, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 14 + } + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 103 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 103 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 104, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 33, + "id": 15 + } + } + }, + "args": [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 105, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 1 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 16 + } + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 106 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Constant": { + "span": 107, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 17 + } + } + }, + { + "Constant": { + "span": 108, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 100 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 18 + } + } + } + ] + } + ] + }, + "span": 109 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 5, + "projection": [ + { + "Field": [ + 1, + 21 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Constant": { + "span": 107, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 17 + } + } + }, + { + "Constant": { + "span": 108, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 100 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 18 + } + } + } + ] + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 109 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 5, + "projection": [ + { + "Field": [ + 0, + 2 + ] + } + ] + } + } + } + ] + }, + "span": 109 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 110, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 34, + "id": 19 + } + } + }, + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "span": 111, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 28 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 20 + } + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 112 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 35 + ] + } + ] + }, + "span": 114 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + 35 + ] + } + ] + }, + "span": 115 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Copy": { + "local": 8, + "projection": [] + } + }, + { + "Copy": { + "local": 9, + "projection": [] + } + } + ] + } + ] + }, + "span": 113 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 10, + "projection": [ + { + "Field": [ + 1, + 21 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Mul", + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + } + ] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 113 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 35 + ] + } + ] + } + } + } + ] + }, + "span": 113 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + 35 + ] + } + ] + }, + "span": 117 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 7, + "projection": [] + } + }, + { + "Copy": { + "local": 12, + "projection": [] + } + } + ] + } + ] + }, + "span": 116 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 13, + "projection": [ + { + "Field": [ + 1, + 21 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 12, + "projection": [] + } + } + ] + }, + "target": 6, + "unwind": "Continue" + } + }, + "span": 116 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 13, + "projection": [ + { + "Field": [ + 0, + 35 + ] + } + ] + } + } + } + ] + }, + "span": 116 + } + ], + "terminator": { + "kind": "Return", + "span": 118 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 119, "mutability": "Mut" - } }, - "ty": 17, - "id": 13 - } - } - } - } - ] - }, - "span": 97 - } - ], - "terminator": { - "kind": "Return", - "span": 96 - } - } - ], - "locals": [ - { - "ty": 17, - "span": 98, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 99, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 99, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 100 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3num20_$LT$impl$u20$i8$GT$13unchecked_sub18precondition_check17h09d11b33245f51d3E", - "mono_item_kind": { - "MonoItemFn": { - "name": "core::num::::unchecked_sub::precondition_check", - "id": 4, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 4 - }, - "span": 55 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 56 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Sub", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Copy": { - "local": 2, - "projection": [] - } - } - ] - } - ] - }, - "span": 56 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 6, - "projection": [ - { - "Field": [ - 0, - 2 - ] + { + "ty": 9, + "span": 120, + "mutability": "Not" + }, + { + "ty": 28, + "span": 103, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 121, + "mutability": "Not" + }, + { + "ty": 2, + "span": 122, + "mutability": "Not" + }, + { + "ty": 26, + "span": 109, + "mutability": "Mut" + }, + { + "ty": 2, + "span": 123, + "mutability": "Not" + }, + { + "ty": 35, + "span": 124, + "mutability": "Not" + }, + { + "ty": 35, + "span": 114, + "mutability": "Mut" + }, + { + "ty": 35, + "span": 115, + "mutability": "Mut" + }, + { + "ty": 36, + "span": 113, + "mutability": "Mut" + }, + { + "ty": 35, + "span": 125, + "mutability": "Not" + }, + { + "ty": 35, + "span": 117, + "mutability": "Mut" + }, + { + "ty": 36, + "span": 116, + "mutability": "Mut" } - ] - } - } - } - ] - }, - "span": 57 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 6, - "projection": [ - { - "Field": [ - 1, - 21 - ] + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "a", + "source_info": { + "span": 120, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "b", + "source_info": { + "span": 121, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "c", + "source_info": { + "span": 122, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "d", + "source_info": { + "span": 123, + "scope": 4 + }, + "composite": null, + "value": { + "Place": { + "local": 6, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "e", + "source_info": { + "span": 124, + "scope": 5 + }, + "composite": null, + "value": { + "Place": { + "local": 7, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "f", + "source_info": { + "span": 125, + "scope": 6 + }, + "composite": null, + "value": { + "Place": { + "local": 11, + "projection": [] + } + }, + "argument_index": null } - ] - } - } - } - ] - }, - "span": 58 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 59 - }, - { - "kind": { - "StorageDead": 4 - }, - "span": 55 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Copy": { - "local": 5, - "projection": [] + ], + "spread_arg": null, + "span": 126 } - }, - "targets": { - "branches": [ - [ - 0, - 2 - ] - ], - "otherwise": 1 - } - } - }, - "span": 54 + ] } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 60, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Constant": { - "span": 61, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 66, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 0 - ] - ] - }, - "align": 8, - "mutability": "Mut" + }, + "details": null + }, + { + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hf8317f745557e08aE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } } - }, - "ty": 24, - "id": 8 - } - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": null, - "unwind": "Unreachable" - } - }, - "span": 62 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 63 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 64, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 65, - "mutability": "Not" - }, - { - "ty": 2, - "span": 65, - "mutability": "Not" - }, - { - "ty": 25, - "span": 62, - "mutability": "Not" - }, - { - "ty": 2, - "span": 57, - "mutability": "Not" - }, - { - "ty": 21, - "span": 58, - "mutability": "Not" - }, - { - "ty": 26, - "span": 56, - "mutability": "Mut" - } - ], - "arg_count": 2, - "var_debug_info": [ - { - "name": "lhs", - "source_info": { - "span": 65, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "rhs", - "source_info": { - "span": 65, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "self", - "source_info": { - "span": 66, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "rhs", - "source_info": { - "span": 67, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "a", - "source_info": { - "span": 57, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "b", - "source_info": { - "span": 58, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 68 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3num20_$LT$impl$u20$i8$GT$13unchecked_sub17he4e31a0bf1fa656dE", - "mono_item_kind": { - "MonoItemFn": { - "name": "core::num::::unchecked_sub", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 3 - }, - "span": 43 - }, - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "NullaryOp": [ - "UbChecks", - 21 - ] - } - ] - }, - "span": 44 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 3, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 0, - 2 - ] - ], - "otherwise": 1 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 45, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 22, - "id": 6 - } - } - }, - "args": [ - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Copy": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 4, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 46 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 48 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "BinaryOp": [ - "SubUnchecked", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Copy": { - "local": 2, - "projection": [] - } - } - ] - } - ] - }, - "span": 49 - } - ], - "terminator": { - "kind": "Return", - "span": 47 - } - } - ], - "locals": [ - { - "ty": 2, - "span": 50, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 51, - "mutability": "Not" - }, - { - "ty": 2, - "span": 52, - "mutability": "Not" - }, - { - "ty": 21, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 46, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 51, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "rhs", - "source_info": { - "span": 52, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - } - ], - "spread_arg": null, - "span": 53 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hdc30c0db2ed02c63E", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 7, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 94 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 94 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 94, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 94, - "mutability": "Not" - }, - { - "ty": 1, - "span": 94, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 94 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h8edc29ddf1567ac9E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 7, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 94 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 94, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 31, - "id": 12 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 94 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 94 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 94 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 94 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 94 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 94, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 94, - "mutability": "Not" - }, - { - "ty": 1, - "span": 94, - "mutability": "Not" - }, - { - "ty": 32, - "span": 94, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 94 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_add18precondition_check17hb3b74e0f4857f64bE", - "mono_item_kind": { - "MonoItemFn": { - "name": "core::num::::unchecked_add::precondition_check", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 4 - }, - "span": 80 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 81 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Add", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Copy": { - "local": 2, - "projection": [] - } - } - ] - } - ] - }, - "span": 81 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 6, - "projection": [ - { - "Field": [ - 0, - 9 - ] + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" } - ] - } - } - } - ] - }, - "span": 82 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 6, - "projection": [ - { - "Field": [ - 1, - 21 - ] + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - ] - } - } + ], + "spread_arg": null, + "span": 42 } - ] - }, - "span": 83 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 84 - }, - { - "kind": { - "StorageDead": 4 - }, - "span": 80 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Copy": { - "local": 5, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 0, - 2 - ] - ], - "otherwise": 1 - } - } - }, - "span": 79 + ] } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 85, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Constant": { - "span": 86, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 66, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 1 - ] - ] - }, - "align": 8, - "mutability": "Mut" + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h675110f50b410d54E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 7, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 94, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 29, + "id": 11 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 94 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 94 + } } - }, - "ty": 24, - "id": 10 - } - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": null, - "unwind": "Unreachable" - } - }, - "span": 87 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 88 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 89, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 90, - "mutability": "Not" - }, - { - "ty": 9, - "span": 90, - "mutability": "Not" - }, - { - "ty": 25, - "span": 87, - "mutability": "Not" - }, - { - "ty": 9, - "span": 82, - "mutability": "Not" - }, - { - "ty": 21, - "span": 83, - "mutability": "Not" - }, - { - "ty": 28, - "span": 81, - "mutability": "Mut" - } - ], - "arg_count": 2, - "var_debug_info": [ - { - "name": "lhs", - "source_info": { - "span": 90, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "rhs", - "source_info": { - "span": 90, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "self", - "source_info": { - "span": 91, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "rhs", - "source_info": { - "span": 92, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "a", - "source_info": { - "span": 82, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "b", - "source_info": { - "span": 83, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 93 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hf8317f745557e08aE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_add17h57df73ebe1c8a989E", - "mono_item_kind": { - "MonoItemFn": { - "name": "core::num::::unchecked_add", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 3 - }, - "span": 69 - }, - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "NullaryOp": [ - "UbChecks", - 21 - ] - } - ] - }, - "span": 44 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 3, - "projection": [] + ], + "locals": [ + { + "ty": 16, + "span": 94, + "mutability": "Mut" + }, + { + "ty": 30, + "span": 94, + "mutability": "Not" + }, + { + "ty": 1, + "span": 94, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 94 } - }, - "targets": { - "branches": [ - [ - 0, - 2 - ] - ], - "otherwise": 1 - } - } - }, - "span": 69 + ] } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 70, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 9 - } - } - }, - "args": [ - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Copy": { - "local": 2, - "projection": [] - } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3num20_$LT$impl$u20$i8$GT$13unchecked_sub18precondition_check17h09d11b33245f51d3E", + "mono_item_kind": { + "MonoItemFn": { + "name": "core::num::::unchecked_sub::precondition_check", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 55 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 0, + 2 + ] + } + ] + } + } + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 1, + 21 + ] + } + ] + } + } + } + ] + }, + "span": 58 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 59 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 55 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 60, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } + }, + "args": [ + { + "Constant": { + "span": 61, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 66, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 24, + "id": 8 + } + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 63 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 64, + "mutability": "Mut" + }, + { + "ty": 2, + "span": 65, + "mutability": "Not" + }, + { + "ty": 2, + "span": 65, + "mutability": "Not" + }, + { + "ty": 25, + "span": 62, + "mutability": "Not" + }, + { + "ty": 2, + "span": 57, + "mutability": "Not" + }, + { + "ty": 21, + "span": 58, + "mutability": "Not" + }, + { + "ty": 26, + "span": 56, + "mutability": "Mut" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "lhs", + "source_info": { + "span": 65, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "rhs", + "source_info": { + "span": 65, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "self", + "source_info": { + "span": 66, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "rhs", + "source_info": { + "span": 67, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "a", + "source_info": { + "span": 57, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "b", + "source_info": { + "span": 58, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 68 } - ], - "destination": { - "local": 4, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 71 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 73 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "BinaryOp": [ - "AddUnchecked", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Copy": { - "local": 2, - "projection": [] - } - } - ] + }, + "details": null + }, + { + "symbol_name": "_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_add18precondition_check17hb3b74e0f4857f64bE", + "mono_item_kind": { + "MonoItemFn": { + "name": "core::num::::unchecked_add::precondition_check", + "id": 6, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 80 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 81 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 81 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 82 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 1, + 21 + ] + } + ] + } + } + } + ] + }, + "span": 83 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 80 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 79 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 85, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } + }, + "args": [ + { + "Constant": { + "span": 86, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 66, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 24, + "id": 10 + } + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 87 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 88 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 89, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 90, + "mutability": "Not" + }, + { + "ty": 9, + "span": 90, + "mutability": "Not" + }, + { + "ty": 25, + "span": 87, + "mutability": "Not" + }, + { + "ty": 9, + "span": 82, + "mutability": "Not" + }, + { + "ty": 21, + "span": 83, + "mutability": "Not" + }, + { + "ty": 28, + "span": 81, + "mutability": "Mut" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "lhs", + "source_info": { + "span": 90, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "rhs", + "source_info": { + "span": 90, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "self", + "source_info": { + "span": 91, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "rhs", + "source_info": { + "span": 92, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "a", + "source_info": { + "span": 82, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "b", + "source_info": { + "span": 83, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 93 } - ] - }, - "span": 74 - } - ], - "terminator": { - "kind": "Return", - "span": 72 + ] } - } - ], - "locals": [ - { - "ty": 9, - "span": 75, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 76, - "mutability": "Not" - }, - { - "ty": 9, - "span": 77, - "mutability": "Not" - }, - { - "ty": 21, - "span": 69, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 71, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 76, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "rhs", - "source_info": { - "span": 77, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - } - ], - "spread_arg": null, - "span": 78 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN25arithmetic_unchecked_runs4main17h1bc17631fcb9d7bbE", - "mono_item_kind": { - "MonoItemFn": { - "name": "main", - "id": 10, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Add", - { - "Constant": { - "span": 101, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h37a5a6e2382fe31bE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } + }, + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 15 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 } - }, - "ty": 9, - "id": 14 - } - } - }, - { - "Constant": { - "span": 102, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 } - }, - "ty": 9, - "id": 14 } - } - } - ] - } - ] - }, - "span": 103 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 2, - "projection": [ - { - "Field": [ - 1, - 21 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Add", - { - "Constant": { - "span": 101, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, + ], + "locals": [ + { + "ty": 16, + "span": 28, "mutability": "Mut" - } - }, - "ty": 9, - "id": 14 - } - } - }, - { - "Constant": { - "span": 102, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, "mutability": "Mut" - } - }, - "ty": 9, - "id": 14 - } - } - } - ] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 103 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 9 - ] } - ] - } - } - } - ] - }, - "span": 103 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 104, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 33, - "id": 15 - } - } - }, - "args": [ - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 105, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 1 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + }, + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 } - }, - "ty": 9, - "id": 16 - } - } + ], + "spread_arg": null, + "span": 3 } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 106 + ] } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Sub", - { - "Constant": { - "span": 107, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h4ef9f89b76c476d3E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 8, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 95 } - }, - "ty": 2, - "id": 17 } - } - }, - { - "Constant": { - "span": 108, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 100 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 18 + ], + "locals": [ + { + "ty": 1, + "span": 95, + "mutability": "Mut" + }, + { + "ty": 30, + "span": 95, + "mutability": "Not" } - } - } - ] - } - ] - }, - "span": 109 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 5, - "projection": [ - { - "Field": [ - 1, - 21 - ] - } - ] + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 95 } - }, - "expected": false, - "msg": { - "Overflow": [ - "Sub", - { - "Constant": { - "span": 107, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_add17h57df73ebe1c8a989E", + "mono_item_kind": { + "MonoItemFn": { + "name": "core::num::::unchecked_add", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 69 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 21 + ] + } + ] + }, + "span": 44 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 17 - } - } - }, - { - "Constant": { - "span": 108, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 100 + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 69 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 70, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 27, + "id": 9 + } + } + }, + "args": [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 71 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 73 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "AddUnchecked", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 74 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, + "terminator": { + "kind": "Return", + "span": 72 + } + } + ], + "locals": [ + { + "ty": 9, + "span": 75, "mutability": "Mut" - } - }, - "ty": 2, - "id": 18 - } - } - } - ] - }, - "target": 3, - "unwind": "Continue" - } - }, - "span": 109 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 5, - "projection": [ - { - "Field": [ - 0, - 2 - ] + }, + { + "ty": 9, + "span": 76, + "mutability": "Not" + }, + { + "ty": 9, + "span": 77, + "mutability": "Not" + }, + { + "ty": 21, + "span": 69, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 71, + "mutability": "Not" } - ] - } - } - } - ] - }, - "span": 109 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 110, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 34, - "id": 19 - } - } - }, - "args": [ - { - "Copy": { - "local": 4, - "projection": [] - } - }, - { - "Constant": { - "span": 111, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 28 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 76, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "rhs", + "source_info": { + "span": 77, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 } - }, - "ty": 2, - "id": 20 - } - } - } - ], - "destination": { - "local": 6, - "projection": [] - }, - "target": 4, - "unwind": "Continue" - } - }, - "span": 112 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 3, - "projection": [] - } - }, - 35 - ] - } - ] - }, - "span": 114 - }, - { - "kind": { - "Assign": [ - { - "local": 9, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 6, - "projection": [] - } - }, - 35 - ] - } - ] - }, - "span": 115 - }, - { - "kind": { - "Assign": [ - { - "local": 10, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Mul", - { - "Copy": { - "local": 8, - "projection": [] - } - }, - { - "Copy": { - "local": 9, - "projection": [] - } - } - ] - } - ] - }, - "span": 113 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 10, - "projection": [ - { - "Field": [ - 1, - 21 - ] - } - ] + ], + "spread_arg": null, + "span": 78 } - }, - "expected": false, - "msg": { - "Overflow": [ - "Mul", - { - "Move": { - "local": 8, - "projection": [] - } - }, - { - "Move": { - "local": 9, - "projection": [] - } - } - ] - }, - "target": 5, - "unwind": "Continue" - } - }, - "span": 113 + ] } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 10, - "projection": [ - { - "Field": [ - 0, - 35 - ] + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hdc30c0db2ed02c63E", + "mono_item_kind": { + "MonoItemFn": { + "name": ">::call_once", + "id": 7, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 94 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 94 + } } - ] - } - } - } - ] - }, - "span": 113 - }, - { - "kind": { - "Assign": [ - { - "local": 12, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 6, - "projection": [] - } - }, - 35 - ] - } - ] - }, - "span": 117 - }, - { - "kind": { - "Assign": [ - { - "local": 13, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Add", - { - "Copy": { - "local": 7, - "projection": [] - } - }, - { - "Copy": { - "local": 12, - "projection": [] - } - } - ] - } - ] - }, - "span": 116 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 13, - "projection": [ - { - "Field": [ - 1, - 21 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Add", - { - "Copy": { - "local": 7, - "projection": [] - } - }, - { - "Move": { - "local": 12, - "projection": [] - } - } - ] - }, - "target": 6, - "unwind": "Continue" - } - }, - "span": 116 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 11, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 13, - "projection": [ - { - "Field": [ - 0, - 35 - ] + ], + "locals": [ + { + "ty": 1, + "span": 94, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 94, + "mutability": "Not" + }, + { + "ty": 1, + "span": 94, + "mutability": "Not" } - ] - } - } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 94 } - ] - }, - "span": 116 - } - ], - "terminator": { - "kind": "Return", - "span": 118 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 119, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 120, - "mutability": "Not" - }, - { - "ty": 28, - "span": 103, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 121, - "mutability": "Not" - }, - { - "ty": 2, - "span": 122, - "mutability": "Not" - }, - { - "ty": 26, - "span": 109, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 123, - "mutability": "Not" - }, - { - "ty": 35, - "span": 124, - "mutability": "Not" - }, - { - "ty": 35, - "span": 114, - "mutability": "Mut" - }, - { - "ty": 35, - "span": 115, - "mutability": "Mut" - }, - { - "ty": 36, - "span": 113, - "mutability": "Mut" - }, - { - "ty": 35, - "span": 125, - "mutability": "Not" - }, - { - "ty": 35, - "span": 117, - "mutability": "Mut" - }, - { - "ty": 36, - "span": 116, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "a", - "source_info": { - "span": 120, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "b", - "source_info": { - "span": 121, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "c", - "source_info": { - "span": 122, - "scope": 3 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "d", - "source_info": { - "span": 123, - "scope": 4 - }, - "composite": null, - "value": { - "Place": { - "local": 6, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "e", - "source_info": { - "span": 124, - "scope": 5 - }, - "composite": null, - "value": { - "Place": { - "local": 7, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "f", - "source_info": { - "span": 125, - "scope": 6 - }, - "composite": null, - "value": { - "Place": { - "local": 11, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 126 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h675110f50b410d54E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 7, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 94, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 29, - "id": 11 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbc9b51d6638817bfE", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 9, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 97, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 13 + } + } + } + } + ] + }, + "span": 97 + } + ], + "terminator": { + "kind": "Return", + "span": 96 + } + } + ], + "locals": [ + { + "ty": 17, + "span": 98, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 99, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 99, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 100 } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 94 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 94 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 94, - "mutability": "Mut" - }, - { - "ty": 30, - "span": 94, - "mutability": "Not" - }, - { - "ty": 1, - "span": 94, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 94 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h4ef9f89b76c476d3E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 8, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 95 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 95, - "mutability": "Mut" - }, - { - "ty": 30, - "span": 95, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 95 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start17h665493b8ec74817bE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h8edc29ddf1567ac9E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 7, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 94 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 94, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 31, + "id": 12 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 94 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 94 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 94 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 94 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 94 + } } - } - ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } + ], + "locals": [ + { + "ty": 16, + "span": 94, + "mutability": "Mut" + }, + { + "ty": 12, + "span": 94, + "mutability": "Not" + }, + { + "ty": 1, + "span": 94, + "mutability": "Not" + }, + { + "ty": 32, + "span": 94, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 94 } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ + }, + "details": null + }, + { + "symbol_name": "_ZN4core3num20_$LT$impl$u20$i8$GT$13unchecked_sub17he4e31a0bf1fa656dE", + "mono_item_kind": { + "MonoItemFn": { + "name": "core::num::::unchecked_sub", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 43 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 21 + ] + } + ] + }, + "span": 44 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 45, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 22, + "id": 6 + } + } + }, + "args": [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 46 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 48 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "SubUnchecked", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 49 + } + ], + "terminator": { + "kind": "Return", + "span": 47 + } + } + ], + "locals": [ + { + "ty": 2, + "span": 50, + "mutability": "Mut" + }, + { + "ty": 2, + "span": 51, + "mutability": "Not" + }, + { + "ty": 2, + "span": 52, + "mutability": "Not" + }, + { + "ty": 21, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 46, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [ { - "Downcast": 0 + "name": "self", + "source_info": { + "span": 51, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 }, { - "Field": [ - 0, - 6 - ] + "name": "rhs", + "source_info": { + "span": 52, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 } - ] - } - } + ], + "spread_arg": null, + "span": 53 } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 + ] } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - } - ], - "types": [ - [ - 21, - { - "RigidTy": "Bool" - } - ], - [ - 2, - { - "RigidTy": { - "Int": "I8" - } - } - ], - [ - 35, - { - "RigidTy": { - "Int": "I16" - } - } - ], - [ - 6, - { - "RigidTy": { - "Int": "Isize" + }, + "details": null } - } ], - [ - 16, - { - "RigidTy": { - "Int": "I32" - } - } + "types": [ + [ + 2, + { + "RigidTy": { + "Int": "I8" + } + } + ], + [ + 9, + { + "RigidTy": { + "Uint": "U8" + } + } + ], + [ + 6, + { + "RigidTy": { + "Int": "Isize" + } + } + ], + [ + 21, + { + "RigidTy": "Bool" + } + ], + [ + 16, + { + "RigidTy": { + "Int": "I32" + } + } + ], + [ + 35, + { + "RigidTy": { + "Int": "I16" + } + } + ] ], - [ - 9, - { - "RigidTy": { - "Uint": "U8" - } - } - ] - ], - "debug": null -} + "debug": null +} \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic-unchecked-runs.state b/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic-unchecked-runs.state index 0f2f3f8c5..4dfd2da71 100644 --- a/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic-unchecked-runs.state +++ b/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic-unchecked-runs.state @@ -31,23 +31,23 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 254 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 254 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 28 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 255 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -100 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Integer ( 255 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -100 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 26 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -32640 , 16 , true ) , ty ( 35 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 255 , 16 , true ) , ty ( 35 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( -128 , 16 , true ) , ty ( 35 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -32640 , 16 , true ) , ty ( 35 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 255 , 16 , true ) , ty ( 35 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( -128 , 16 , true ) , ty ( 35 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 36 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( -32768 , 16 , true ) , ty ( 35 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -128 , 16 , true ) , ty ( 35 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Integer ( -32768 , 16 , true ) , ty ( 35 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -128 , 16 , true ) , ty ( 35 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 36 ) , mutabilityMut ) ) @@ -55,16 +55,16 @@ .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 9 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 97 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 13 ) ) ) ) ) ) , span: span ( 97 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 96 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 98 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 99 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 99 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 100 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 94 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 94 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 94 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 94 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 94 ) ) ) ) - ty ( 22 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_sub::precondition_check" ) , id: defId ( 4 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 55 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) ) ) , span: span ( 58 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 59 ) ) statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 24 ) , id: mirConstId ( 8 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionUnreachable ) , span: span ( 62 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 62 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 57 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 56 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "lhs" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 57 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 68 ) ) ) ) - ty ( 27 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_add::precondition_check" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 80 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 81 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 81 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 82 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) ) ) , span: span ( 83 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 84 ) ) statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 80 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 79 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 85 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 86 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 24 ) , id: mirConstId ( 10 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionUnreachable ) , span: span ( 87 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 88 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 89 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 90 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 90 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 87 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 82 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 83 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 81 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "lhs" ) , sourceInfo: sourceInfo (... span: span ( 90 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 90 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 91 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 92 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 82 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 83 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 93 ) ) ) ) - ty ( 29 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 94 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 94 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 12 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 94 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 94 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 94 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 94 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 32 ) , span: span ( 94 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 94 ) ) ) ) - ty ( 31 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 33 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_add" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 69 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueNullaryOp ( nullOpUbChecks , ty ( 21 ) ) ) , span: span ( 44 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 69 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 70 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 71 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 73 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpAddUnchecked , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 74 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 72 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 9 ) , span: span ( 75 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 77 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 69 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 71 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 77 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 78 ) ) ) ) - ty ( 34 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_sub" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 43 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueNullaryOp ( nullOpUbChecks , ty ( 21 ) ) ) , span: span ( 44 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 45 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 22 ) , id: mirConstId ( 6 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 46 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 48 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpSubUnchecked , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 49 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 47 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 2 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 51 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 52 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 46 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 51 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 52 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 53 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 10 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandConstant ( constOperand (... span: span ( 101 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 14 ) ) ) ) , operandConstant ( constOperand (... span: span ( 102 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 14 ) ) ) ) ) ) , span: span ( 103 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandConstant ( constOperand (... span: span ( 101 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 14 ) ) ) ) , operandConstant ( constOperand (... span: span ( 102 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 14 ) ) ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionContinue ) , span: span ( 103 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 103 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 104 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 33 ) , id: mirConstId ( 15 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 105 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 16 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 106 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandConstant ( constOperand (... span: span ( 107 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 17 ) ) ) ) , operandConstant ( constOperand (... span: span ( 108 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"d" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 18 ) ) ) ) ) ) , span: span ( 109 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 5 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandConstant ( constOperand (... span: span ( 107 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 17 ) ) ) ) , operandConstant ( constOperand (... span: span ( 108 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"d" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 18 ) ) ) ) ) , target: basicBlockIdx ( 3 ) , unwind: unwindActionContinue ) , span: span ( 109 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 5 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 109 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 110 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 34 ) , id: mirConstId ( 19 ) ) ) ) , args: operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 111 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x1c" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 20 ) ) ) ) .Operands , destination: place (... local: local ( 6 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 4 ) ) , unwind: unwindActionContinue ) , span: span ( 112 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 35 ) ) ) , span: span ( 114 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 35 ) ) ) , span: span ( 115 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpMul , operandCopy ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 113 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 10 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpMul , operandMove ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 5 ) , unwind: unwindActionContinue ) , span: span ( 113 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 10 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 35 ) ) .ProjectionElems ) ) ) ) , span: span ( 113 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 35 ) ) ) , span: span ( 117 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 13 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 116 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 13 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandCopy ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 6 ) , unwind: unwindActionContinue ) , span: span ( 116 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 13 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 35 ) ) .ProjectionElems ) ) ) ) , span: span ( 116 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 118 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 119 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 120 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 103 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 121 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 122 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 109 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 123 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 35 ) , span: span ( 124 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 35 ) , span: span ( 114 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 35 ) , span: span ( 115 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 36 ) , span: span ( 113 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 35 ) , span: span ( 125 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 35 ) , span: span ( 117 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 36 ) , span: span ( 116 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 120 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 121 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "c" ) , sourceInfo: sourceInfo (... span: span ( 122 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "d" ) , sourceInfo: sourceInfo (... span: span ( 123 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 124 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 125 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 126 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 9 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 97 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 13 ) ) ) ) ) ) , span: span ( 97 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 96 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 98 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 99 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 99 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 100 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 94 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 94 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 94 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 94 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 94 ) ) .Bodies ) + ty ( 22 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_sub::precondition_check" ) , id: defId ( 4 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 55 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) ) ) , span: span ( 58 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 59 ) ) statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 24 ) , id: mirConstId ( 8 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionUnreachable ) , span: span ( 62 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 62 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 57 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 56 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "lhs" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 57 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 68 ) ) .Bodies ) + ty ( 27 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_add::precondition_check" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 80 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 81 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 81 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 82 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) ) ) , span: span ( 83 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 84 ) ) statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 80 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 79 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 85 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 86 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 24 ) , id: mirConstId ( 10 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionUnreachable ) , span: span ( 87 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 88 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 89 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 90 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 90 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 87 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 82 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 83 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 81 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "lhs" ) , sourceInfo: sourceInfo (... span: span ( 90 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 90 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 91 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 92 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 82 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 83 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 93 ) ) .Bodies ) + ty ( 29 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 94 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 94 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 12 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 94 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 94 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 94 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 94 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 32 ) , span: span ( 94 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 94 ) ) .Bodies ) + ty ( 31 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 33 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_add" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 69 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueNullaryOp ( nullOpUbChecks , ty ( 21 ) ) ) , span: span ( 44 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 69 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 70 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 71 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 73 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpAddUnchecked , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 74 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 72 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 9 ) , span: span ( 75 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 77 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 69 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 71 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 77 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 78 ) ) .Bodies ) + ty ( 34 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_sub" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 43 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueNullaryOp ( nullOpUbChecks , ty ( 21 ) ) ) , span: span ( 44 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 45 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 22 ) , id: mirConstId ( 6 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 46 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 48 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpSubUnchecked , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 49 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 47 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 2 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 51 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 52 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 46 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 51 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 52 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 53 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 10 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandConstant ( constOperand (... span: span ( 101 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 14 ) ) ) ) , operandConstant ( constOperand (... span: span ( 102 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 14 ) ) ) ) ) ) , span: span ( 103 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandConstant ( constOperand (... span: span ( 101 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 14 ) ) ) ) , operandConstant ( constOperand (... span: span ( 102 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 14 ) ) ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionContinue ) , span: span ( 103 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 103 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 104 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 33 ) , id: mirConstId ( 15 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 105 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 16 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 106 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandConstant ( constOperand (... span: span ( 107 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 17 ) ) ) ) , operandConstant ( constOperand (... span: span ( 108 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"d" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 18 ) ) ) ) ) ) , span: span ( 109 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 5 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandConstant ( constOperand (... span: span ( 107 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 17 ) ) ) ) , operandConstant ( constOperand (... span: span ( 108 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"d" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 18 ) ) ) ) ) , target: basicBlockIdx ( 3 ) , unwind: unwindActionContinue ) , span: span ( 109 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 5 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 109 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 110 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 34 ) , id: mirConstId ( 19 ) ) ) ) , args: operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 111 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x1c" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 20 ) ) ) ) .Operands , destination: place (... local: local ( 6 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 4 ) ) , unwind: unwindActionContinue ) , span: span ( 112 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 35 ) ) ) , span: span ( 114 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 35 ) ) ) , span: span ( 115 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpMul , operandCopy ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 113 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 10 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpMul , operandMove ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 5 ) , unwind: unwindActionContinue ) , span: span ( 113 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 10 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 35 ) ) .ProjectionElems ) ) ) ) , span: span ( 113 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 35 ) ) ) , span: span ( 117 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 13 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 116 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 13 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandCopy ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 6 ) , unwind: unwindActionContinue ) , span: span ( 116 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 13 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 35 ) ) .ProjectionElems ) ) ) ) , span: span ( 116 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 118 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 119 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 120 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 103 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 121 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 122 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 109 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 123 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 35 ) , span: span ( 124 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 35 ) , span: span ( 114 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 35 ) , span: span ( 115 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 36 ) , span: span ( 113 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 35 ) , span: span ( 125 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 35 ) , span: span ( 117 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 36 ) , span: span ( 116 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 120 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 121 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "c" ) , sourceInfo: sourceInfo (... span: span ( 122 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "d" ) , sourceInfo: sourceInfo (... span: span ( 123 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 124 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 125 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 126 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic.smir.json b/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic.smir.json index 4f2cbdca4..587fdfc54 100644 --- a/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic.smir.json @@ -1,2767 +1,2785 @@ { - "name": "arithmetic", - "crate_id": 3562334553558048806, - "allocs": [], - "functions": [ - [ - 20, - { - "IntrinsicSym": "black_box" - } + "name": "arithmetic", + "crate_id": 3562334553558048806, + "allocs": [], + "functions": [ + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h22c96e4e98f6c015E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h1579660f176b84e5E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha416e9336579c441E" + } + ], + [ + 30, + { + "NoOpSym": "" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h046ff63ba666c500E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h9a78461d8520b72aE" + } + ], + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + } + ] ], - [ - 0, - { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" - } - ], - [ - 19, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h22c96e4e98f6c015E" - } - ], - [ - 21, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h046ff63ba666c500E" - } - ], - [ - 33, - { - "NoOpSym": "" - } - ], - [ - 23, - { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h9a78461d8520b72aE" - } - ], - [ - 14, - { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha416e9336579c441E" - } - ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h1579660f176b84e5E" - } - ] - ], - "uneval_consts": [], - "items": [ - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hddd54efbfb63f680E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start17h408f33832fba4274E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] + "uneval_consts": [], + "items": [ + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hddd54efbfb63f680E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } } - } - ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ + ], + "locals": [ { - "Downcast": 0 + "ty": 1, + "span": 44, + "mutability": "Mut" }, { - "Field": [ - 0, - 6 - ] + "ty": 22, + "span": 44, + "mutability": "Not" } - ] - } - } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 - } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h22c96e4e98f6c015E", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN10arithmetic4main17hcd0e28aacae0c2e9E", - "mono_item_kind": { - "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Add", - { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h22c96e4e98f6c015E", + "mono_item_kind": { + "MonoItemFn": { + "name": ">::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 } - }, - "ty": 9, - "id": 9 - } - } - }, - { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 128 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } - }, - "ty": 9, - "id": 10 } - } - } - ] - } - ] - }, - "span": 52 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 2, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - }, - "expected": false, - "msg": { - "Overflow": [ - "Add", - { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h9a78461d8520b72aE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 9, - "id": 9 - } - } - }, - { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 128 + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } + }, + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 15 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, "mutability": "Mut" - } - }, - "ty": 9, - "id": 10 - } - } - } - ] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 52 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 9 - ] } - ] - } - } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + }, + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 3 } - ] - }, - "span": 52 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Sub", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 53, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 255 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h1579660f176b84e5E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 } - }, - "ty": 9, - "id": 11 } - } - } - ] - } - ] - }, - "span": 54 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 4, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Sub", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 53, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 255 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, + ], + "locals": [ + { + "ty": 1, + "span": 37, "mutability": "Mut" - } - }, - "ty": 9, - "id": 11 - } - } - } - ] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 54 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 4, - "projection": [ - { - "Field": [ - 0, - 9 - ] + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - ] - } - } + ], + "spread_arg": null, + "span": 42 } - ] - }, - "span": 54 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Sub", - { - "Constant": { - "span": 55, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha416e9336579c441E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 } - }, - "ty": 2, - "id": 12 } - } - }, - { - "Constant": { - "span": 56, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 100 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 13 + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 48, + "mutability": "Not" } - } - } - ] - } - ] - }, - "span": 57 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 7, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Sub", - { - "Constant": { - "span": 55, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 12 - } - } - }, - { - "Constant": { - "span": 56, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 100 - ], - "provenance": { - "ptrs": [] + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 13 - } - } - } - ] - }, - "target": 3, - "unwind": "Continue" - } - }, - "span": 57 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 7, - "projection": [ - { - "Field": [ - 0, - 2 - ] + "argument_index": 1 } - ] - } - } + ], + "spread_arg": null, + "span": 49 } - ] - }, - "span": 57 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Sub", - { - "Copy": { - "local": 6, - "projection": [] - } - }, - { - "Constant": { - "span": 58, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 28 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h046ff63ba666c500E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 } - }, - "ty": 2, - "id": 14 } - } - } - ] - } - ] - }, - "span": 59 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 8, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Sub", - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Constant": { - "span": 58, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 28 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, + ], + "locals": [ + { + "ty": 16, + "span": 43, "mutability": "Mut" - } - }, - "ty": 2, - "id": 14 - } - } - } - ] - }, - "target": 4, - "unwind": "Continue" - } - }, - "span": 59 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 8, - "projection": [ - { - "Field": [ - 0, - 2 - ] + }, + { + "ty": 12, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + }, + { + "ty": 24, + "span": 43, + "mutability": "Not" } - ] - } - } - } - ] - }, - "span": 59 - }, - { - "kind": { - "Assign": [ - { - "local": 11, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 5, - "projection": [] - } - }, - 9 - ] + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ] - }, - "span": 62 - }, - { - "kind": { - "Assign": [ - { - "local": 12, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Add", - { - "Copy": { - "local": 11, - "projection": [] - } - }, - { - "Constant": { - "span": 60, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN10arithmetic4main17hcd0e28aacae0c2e9E", + "mono_item_kind": { + "MonoItemFn": { + "name": "main", + "id": 6, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 9 + } + } + }, + { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 128 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 10 + } + } + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 9 + } + } + }, + { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 128 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 10 + } + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 } - }, - "ty": 9, - "id": 9 - } - } - } - ] - } - ] - }, - "span": 61 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 12, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Add", - { - "Move": { - "local": 11, - "projection": [] - } - }, - { - "Constant": { - "span": 60, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 53, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 255 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 11 + } + } + } + ] + } + ] + }, + "span": 54 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 53, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 255 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 11 + } + } + } + ] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Constant": { + "span": 55, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 12 + } + } + }, + { + "Constant": { + "span": 56, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 100 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 13 + } + } + } + ] + } + ] + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 7, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Constant": { + "span": 55, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 12 + } + } + }, + { + "Constant": { + "span": 56, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 100 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 13 + } + } + } + ] + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 57 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 7, + "projection": [ + { + "Field": [ + 0, + 2 + ] + } + ] + } + } + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Constant": { + "span": 58, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 28 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 14 + } + } + } + ] + } + ] + }, + "span": 59 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 8, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Constant": { + "span": 58, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 28 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 14 + } + } + } + ] + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 59 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 8, + "projection": [ + { + "Field": [ + 0, + 2 + ] + } + ] + } + } + } + ] + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + 9 + ] + } + ] + }, + "span": 62 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + { + "Constant": { + "span": 60, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 9 + } + } + } + ] + } + ] + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 12, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Move": { + "local": 11, + "projection": [] + } + }, + { + "Constant": { + "span": 60, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 9 + } + } + } + ] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 61 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 12, + "projection": [ + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 61 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 10, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 63 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 13, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + }, + "target": 6, + "unwind": "Continue" + } + }, + "span": 63 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 13, + "projection": [ + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 63 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 26 + ] + } + ] + }, + "span": 65 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + 26 + ] + } + ] + }, + "span": 66 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Copy": { + "local": 15, + "projection": [] + } + }, + { + "Copy": { + "local": 16, + "projection": [] + } + } + ] + } + ] + }, + "span": 64 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 17, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Mul", + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + }, + "target": 7, + "unwind": "Continue" + } + }, + "span": 64 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 17, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 64 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + 26 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Copy": { + "local": 19, + "projection": [] + } + } + ] + } + ] + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 20, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Move": { + "local": 19, + "projection": [] + } + } + ] + }, + "target": 8, + "unwind": "Continue" + } + }, + "span": 67 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 20, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 67 + } + ], + "terminator": { + "kind": "Return", + "span": 69 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 70, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 71, + "mutability": "Not" + }, + { + "ty": 27, + "span": 52, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 72, + "mutability": "Not" + }, + { + "ty": 27, + "span": 54, + "mutability": "Mut" + }, + { + "ty": 2, + "span": 73, + "mutability": "Not" + }, + { + "ty": 2, + "span": 57, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 57, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 59, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 74, + "mutability": "Not" + }, + { + "ty": 9, + "span": 61, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 62, + "mutability": "Mut" + }, + { + "ty": 27, + "span": 61, + "mutability": "Mut" + }, + { + "ty": 27, + "span": 63, + "mutability": "Mut" + }, + { + "ty": 26, + "span": 75, + "mutability": "Not" + }, + { + "ty": 26, + "span": 65, + "mutability": "Mut" + }, + { + "ty": 26, + "span": 66, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 64, + "mutability": "Mut" + }, + { + "ty": 26, + "span": 76, + "mutability": "Not" + }, + { + "ty": 26, + "span": 68, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 67, "mutability": "Mut" - } - }, - "ty": 9, - "id": 9 - } - } - } - ] - }, - "target": 5, - "unwind": "Continue" - } - }, - "span": 61 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 10, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 12, - "projection": [ - { - "Field": [ - 0, - 9 - ] } - ] - } - } - } - ] - }, - "span": 61 - }, - { - "kind": { - "Assign": [ - { - "local": 13, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Sub", - { - "Copy": { - "local": 10, - "projection": [] - } - }, - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - } - ] - }, - "span": 63 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 13, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Sub", - { - "Move": { - "local": 10, - "projection": [] - } - }, - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - }, - "target": 6, - "unwind": "Continue" - } - }, - "span": 63 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 9, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 13, - "projection": [ - { - "Field": [ - 0, - 9 - ] + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "a", + "source_info": { + "span": 71, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "b", + "source_info": { + "span": 72, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "c", + "source_info": { + "span": 73, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "d", + "source_info": { + "span": 74, + "scope": 4 + }, + "composite": null, + "value": { + "Place": { + "local": 9, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "e", + "source_info": { + "span": 75, + "scope": 5 + }, + "composite": null, + "value": { + "Place": { + "local": 14, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "f", + "source_info": { + "span": 76, + "scope": 6 + }, + "composite": null, + "value": { + "Place": { + "local": 18, + "projection": [] + } + }, + "argument_index": null } - ] - } - } + ], + "spread_arg": null, + "span": 77 } - ] - }, - "span": 63 - }, - { - "kind": { - "Assign": [ - { - "local": 15, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - 26 - ] - } - ] - }, - "span": 65 - }, - { - "kind": { - "Assign": [ - { - "local": 16, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 5, - "projection": [] - } - }, - 26 - ] - } - ] - }, - "span": 66 - }, - { - "kind": { - "Assign": [ - { - "local": 17, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Mul", - { - "Copy": { - "local": 15, - "projection": [] - } - }, - { - "Copy": { - "local": 16, - "projection": [] - } - } - ] - } - ] - }, - "span": 64 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 17, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Mul", - { - "Move": { - "local": 15, - "projection": [] - } - }, - { - "Move": { - "local": 16, - "projection": [] - } - } - ] - }, - "target": 7, - "unwind": "Continue" - } - }, - "span": 64 + ] } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 14, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 17, - "projection": [ - { - "Field": [ - 0, - 26 - ] + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h2376acb044c61e74E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } } - ] - } - } - } - ] - }, - "span": 64 - }, - { - "kind": { - "Assign": [ - { - "local": 19, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 5, - "projection": [] - } - }, - 26 - ] - } - ] - }, - "span": 68 - }, - { - "kind": { - "Assign": [ - { - "local": 20, - "projection": [] - }, - { - "CheckedBinaryOp": [ - "Add", - { - "Copy": { - "local": 14, - "projection": [] - } - }, - { - "Copy": { - "local": 19, - "projection": [] - } - } - ] - } - ] - }, - "span": 67 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 20, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Add", - { - "Copy": { - "local": 14, - "projection": [] - } - }, - { - "Move": { - "local": 19, - "projection": [] - } - } - ] - }, - "target": 8, - "unwind": "Continue" - } - }, - "span": 67 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 18, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 20, - "projection": [ - { - "Field": [ - 0, - 26 - ] + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" } - ] - } - } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ] - }, - "span": 67 - } - ], - "terminator": { - "kind": "Return", - "span": 69 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 70, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 71, - "mutability": "Not" - }, - { - "ty": 27, - "span": 52, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 72, - "mutability": "Not" - }, - { - "ty": 27, - "span": 54, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 73, - "mutability": "Not" - }, - { - "ty": 2, - "span": 57, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 57, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 59, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 74, - "mutability": "Not" - }, - { - "ty": 9, - "span": 61, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 62, - "mutability": "Mut" - }, - { - "ty": 27, - "span": 61, - "mutability": "Mut" - }, - { - "ty": 27, - "span": 63, - "mutability": "Mut" - }, - { - "ty": 26, - "span": 75, - "mutability": "Not" - }, - { - "ty": 26, - "span": 65, - "mutability": "Mut" - }, - { - "ty": 26, - "span": 66, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 64, - "mutability": "Mut" - }, - { - "ty": 26, - "span": 76, - "mutability": "Not" - }, - { - "ty": 26, - "span": 68, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 67, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "a", - "source_info": { - "span": 71, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "b", - "source_info": { - "span": 72, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "c", - "source_info": { - "span": 73, - "scope": 3 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "d", - "source_info": { - "span": 74, - "scope": 4 - }, - "composite": null, - "value": { - "Place": { - "local": 9, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "e", - "source_info": { - "span": 75, - "scope": 5 - }, - "composite": null, - "value": { - "Place": { - "local": 14, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "f", - "source_info": { - "span": 76, - "scope": 6 - }, - "composite": null, - "value": { - "Place": { - "local": 18, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 77 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha416e9336579c441E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start17h408f33832fba4274E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } + } + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } }, - "ty": 17, - "id": 8 - } - } - } - } - ] - }, - "span": 46 - } - ], - "terminator": { - "kind": "Return", - "span": 45 - } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h1579660f176b84e5E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h2376acb044c61e74E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h046ff63ba666c500E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h9a78461d8520b72aE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 + } } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, + { + "ty": 8, + "span": 11, + "mutability": "Not" + }, + { + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, { - "Field": [ - 0, - 15 - ] + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 }, { - "Field": [ - 0, - 9 - ] + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null } - ] - } - } + ], + "spread_arg": null, + "span": 13 } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] - } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 - }, - "span": 27 - } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } ] - } - }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - } - ], - "types": [ - [ - 6, - { - "RigidTy": { - "Int": "Isize" - } - } - ], - [ - 9, - { - "RigidTy": { - "Uint": "U8" - } - } - ], - [ - 2, - { - "RigidTy": { - "Int": "I8" - } - } - ], - [ - 26, - { - "RigidTy": { - "Int": "I16" + } + }, + "details": null } - } ], - [ - 16, - { - "RigidTy": { - "Int": "I32" - } - } + "types": [ + [ + 2, + { + "RigidTy": { + "Int": "I8" + } + } + ], + [ + 6, + { + "RigidTy": { + "Int": "Isize" + } + } + ], + [ + 9, + { + "RigidTy": { + "Uint": "U8" + } + } + ], + [ + 26, + { + "RigidTy": { + "Int": "I16" + } + } + ], + [ + 25, + { + "RigidTy": "Bool" + } + ], + [ + 16, + { + "RigidTy": { + "Int": "I32" + } + } + ] ], - [ - 25, - { - "RigidTy": "Bool" - } - ] - ], - "debug": null -} + "debug": null +} \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic.state b/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic.state index 31fb43dd2..79b22201f 100644 --- a/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic.state +++ b/kmir/src/tests/integration/data/exec-smir/arithmetic/arithmetic.state @@ -33,34 +33,34 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 255 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 255 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 27 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 0 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Integer ( 0 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 27 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -100 , 8 , true ) , ty ( 2 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -100 , 8 , true ) , ty ( 2 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 28 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 28 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 0 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 255 , 8 , false ) , ty ( 9 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 128 , 8 , false ) , ty ( 9 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Integer ( 0 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 255 , 8 , false ) , ty ( 9 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 128 , 8 , false ) , ty ( 9 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 27 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 27 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( -32640 , 16 , true ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 255 , 16 , true ) , ty ( 26 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( -128 , 16 , true ) , ty ( 26 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Integer ( -32640 , 16 , true ) , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 255 , 16 , true ) , ty ( 26 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( -128 , 16 , true ) , ty ( 26 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 29 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( -32768 , 16 , true ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -128 , 16 , true ) , ty ( 26 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( typedLocal ( Integer ( -32768 , 16 , true ) , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -128 , 16 , true ) , ty ( 26 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 29 ) , mutabilityMut ) ) @@ -68,12 +68,12 @@ .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 10 ) ) ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionContinue ) , span: span ( 52 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\xff" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 11 ) ) ) ) ) ) , span: span ( 54 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 4 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\xff" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 11 ) ) ) ) ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 54 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 4 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 12 ) ) ) ) , operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"d" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 13 ) ) ) ) ) ) , span: span ( 57 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 7 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 12 ) ) ) ) , operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"d" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 13 ) ) ) ) ) , target: basicBlockIdx ( 3 ) , unwind: unwindActionContinue ) , span: span ( 57 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 7 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x1c" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 14 ) ) ) ) ) ) , span: span ( 59 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 8 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x1c" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 14 ) ) ) ) ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionContinue ) , span: span ( 59 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 8 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , ty ( 9 ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 61 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 12 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandMove ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) ) , target: basicBlockIdx ( 5 ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 12 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 13 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 63 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 13 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandMove ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 6 ) , unwind: unwindActionContinue ) , span: span ( 63 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 13 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 63 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 15 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 65 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 16 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 66 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 17 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpMul , operandCopy ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 64 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 17 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpMul , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 7 ) , unwind: unwindActionContinue ) , span: span ( 64 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 17 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 64 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 19 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 68 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 20 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 19 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 67 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 20 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandCopy ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 19 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 8 ) , unwind: unwindActionContinue ) , span: span ( 67 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 18 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 20 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 67 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 69 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 70 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 71 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 52 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 72 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 73 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 59 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 74 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 62 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 63 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 68 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 67 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 71 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 72 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "c" ) , sourceInfo: sourceInfo (... span: span ( 73 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "d" ) , sourceInfo: sourceInfo (... span: span ( 74 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 75 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 18 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 77 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 10 ) ) ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionContinue ) , span: span ( 52 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\xff" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 11 ) ) ) ) ) ) , span: span ( 54 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 4 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\xff" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 11 ) ) ) ) ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 54 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 4 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 12 ) ) ) ) , operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"d" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 13 ) ) ) ) ) ) , span: span ( 57 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 7 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 12 ) ) ) ) , operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"d" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 13 ) ) ) ) ) , target: basicBlockIdx ( 3 ) , unwind: unwindActionContinue ) , span: span ( 57 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 7 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x1c" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 14 ) ) ) ) ) ) , span: span ( 59 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 8 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x1c" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 14 ) ) ) ) ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionContinue ) , span: span ( 59 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 8 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , ty ( 9 ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 61 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 12 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandMove ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) ) , target: basicBlockIdx ( 5 ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 12 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 13 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpSub , operandCopy ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 63 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 13 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpSub , operandMove ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 6 ) , unwind: unwindActionContinue ) , span: span ( 63 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 13 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 63 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 15 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 65 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 16 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 66 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 17 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpMul , operandCopy ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 64 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 17 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpMul , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 7 ) , unwind: unwindActionContinue ) , span: span ( 64 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 17 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 64 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 19 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 68 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 20 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 19 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 67 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 20 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandCopy ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 19 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 8 ) , unwind: unwindActionContinue ) , span: span ( 67 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 18 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 20 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 67 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 69 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 70 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 71 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 52 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 72 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 73 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 59 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 74 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 62 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 63 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 68 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 67 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 71 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 72 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "c" ) , sourceInfo: sourceInfo (... span: span ( 73 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "d" ) , sourceInfo: sourceInfo (... span: span ( 74 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 75 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 18 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 77 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/arithmetic/unary.smir.json b/kmir/src/tests/integration/data/exec-smir/arithmetic/unary.smir.json index 4ac711f72..2d5b11ed1 100644 --- a/kmir/src/tests/integration/data/exec-smir/arithmetic/unary.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/arithmetic/unary.smir.json @@ -1,1933 +1,1951 @@ { - "name": "unary", - "crate_id": 16478188162494399089, - "allocs": [], - "functions": [ - [ - 20, - { - "IntrinsicSym": "black_box" - } + "name": "unary", + "crate_id": 16478188162494399089, + "allocs": [], + "functions": [ + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hfaf68eb4bca11ec8E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h9a122567832c9ff4E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h51d05a9e9b249329E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h770d42789cc816fdE" + } + ], + [ + 30, + { + "NoOpSym": "" + } + ], + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h69cc40d36c7689e0E" + } + ] ], - [ - 21, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h51d05a9e9b249329E" - } - ], - [ - 14, - { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hfaf68eb4bca11ec8E" - } - ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h9a122567832c9ff4E" - } - ], - [ - 0, - { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" - } - ], - [ - 23, - { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h69cc40d36c7689e0E" - } - ], - [ - 19, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h770d42789cc816fdE" - } - ], - [ - 27, - { - "NoOpSym": "" - } - ] - ], - "uneval_consts": [], - "items": [ - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hfaf68eb4bca11ec8E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ + "uneval_consts": [], + "items": [ + { + "symbol_name": "_ZN3std2rt10lang_start17hdc5efb1e0bda457bE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": [ { - "local": 0, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } + } + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 + } + } + ], + "locals": [ + { + "ty": 6, + "span": 8, "mutability": "Mut" - } }, - "ty": 17, - "id": 8 - } - } - } + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, + { + "ty": 8, + "span": 11, + "mutability": "Not" + }, + { + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 } - ] - }, - "span": 46 - } - ], - "terminator": { - "kind": "Return", - "span": 45 + ] } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6102650d02f5b9f6E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6102650d02f5b9f6E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ] } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN5unary4main17hb4d720234eb3817dE", - "mono_item_kind": { - "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [] - }, + }, + "details": null + }, + { + "symbol_name": "_ZN5unary4main17hb4d720234eb3817dE", + "mono_item_kind": { + "MonoItemFn": { + "name": "main", + "id": 6, + "body": [ { - "CheckedBinaryOp": [ - "Add", - { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 9 + } + } + }, + { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 128 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 10 + } + } + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 127 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 9 + } + } + }, + { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 128 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 10 + } + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 } - }, - "ty": 9, - "id": 9 - } - } - }, - { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 128 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "UnaryOp": [ + "Not", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "UnaryOp": [ + "Not", + { + "Constant": { + "span": 55, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 133 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 11 + } + } + } + ] + } + ] + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "UnaryOp": [ + "Not", + { + "Constant": { + "span": 57, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 25, + "id": 12 + } + } + } + ] + } + ] + }, + "span": 58 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "span": 53, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 128 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 13 + } + } + } + ] + } + ] + }, + "span": 53 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 7, + "projection": [] + } + }, + "expected": false, + "msg": { + "OverflowNeg": { + "Copy": { + "local": 4, + "projection": [] + } + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 53 } - }, - "ty": 9, - "id": 10 - } - } - } - ] - } - ] - }, - "span": 52 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 2, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - } - }, - "expected": false, - "msg": { - "Overflow": [ - "Add", - { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 127 + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "UnaryOp": [ + "Neg", + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 53 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, + "terminator": { + "kind": "Return", + "span": 59 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 60, "mutability": "Mut" - } }, - "ty": 9, - "id": 9 - } - } - }, - { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 128 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, + { + "ty": 9, + "span": 61, + "mutability": "Not" + }, + { + "ty": 26, + "span": 52, "mutability": "Mut" - } }, - "ty": 9, - "id": 10 - } - } - } - ] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 52 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Move": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 9 - ] + { + "ty": 9, + "span": 62, + "mutability": "Not" + }, + { + "ty": 2, + "span": 63, + "mutability": "Not" + }, + { + "ty": 25, + "span": 64, + "mutability": "Not" + }, + { + "ty": 2, + "span": 65, + "mutability": "Not" + }, + { + "ty": 25, + "span": 53, + "mutability": "Mut" } - ] - } - } - } - ] - }, - "span": 52 - }, - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "UnaryOp": [ - "Not", - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - } - ] - }, - "span": 54 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "UnaryOp": [ - "Not", - { - "Constant": { - "span": 55, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 133 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 11 + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "a", + "source_info": { + "span": 61, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "b", + "source_info": { + "span": 62, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "c", + "source_info": { + "span": 63, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "d", + "source_info": { + "span": 64, + "scope": 4 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "e", + "source_info": { + "span": 65, + "scope": 5 + }, + "composite": null, + "value": { + "Place": { + "local": 6, + "projection": [] + } + }, + "argument_index": null } - } - } - ] + ], + "spread_arg": null, + "span": 66 } - ] - }, - "span": 56 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h770d42789cc816fdE", + "mono_item_kind": { + "MonoItemFn": { + "name": ">::call_once", + "id": 3, + "body": [ { - "UnaryOp": [ - "Not", - { - "Constant": { - "span": 57, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 } - }, - "ty": 25, - "id": 12 - } - } - } - ] - } - ] - }, - "span": 58 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "BinaryOp": [ - "Eq", - { - "Copy": { - "local": 4, - "projection": [] - } - }, - { - "Constant": { - "span": 53, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 128 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } - }, - "ty": 2, - "id": 13 } - } - } - ] - } - ] - }, - "span": 53 - } - ], - "terminator": { - "kind": { - "Assert": { - "cond": { - "Move": { - "local": 7, - "projection": [] - } - }, - "expected": false, - "msg": { - "OverflowNeg": { - "Copy": { - "local": 4, - "projection": [] - } - } - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 53 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "UnaryOp": [ - "Neg", - { - "Copy": { - "local": 4, - "projection": [] - } - } - ] - } - ] - }, - "span": 53 - } - ], - "terminator": { - "kind": "Return", - "span": 59 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 60, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 61, - "mutability": "Not" - }, - { - "ty": 26, - "span": 52, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 62, - "mutability": "Not" - }, - { - "ty": 2, - "span": 63, - "mutability": "Not" - }, - { - "ty": 25, - "span": 64, - "mutability": "Not" - }, - { - "ty": 2, - "span": 65, - "mutability": "Not" - }, - { - "ty": 25, - "span": 53, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "a", - "source_info": { - "span": 61, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "b", - "source_info": { - "span": 62, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "c", - "source_info": { - "span": 63, - "scope": 3 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "d", - "source_info": { - "span": 64, - "scope": 4 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "e", - "source_info": { - "span": 65, - "scope": 5 - }, - "composite": null, - "value": { - "Place": { - "local": 6, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 66 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h770d42789cc816fdE", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h51d05a9e9b249329E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h9a122567832c9ff4E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start17hdc5efb1e0bda457bE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h69cc40d36c7689e0E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } + }, + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 15 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 + } } - } - ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + }, + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 3 } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { - "kind": { - "Assign": [ + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hfaf68eb4bca11ec8E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ { - "Downcast": 0 + "ty": 17, + "span": 47, + "mutability": "Mut" }, { - "Field": [ - 0, - 6 - ] + "ty": 1, + "span": 48, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - ] - } - } + ], + "spread_arg": null, + "span": 49 } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 + ] } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h69cc40d36c7689e0E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, + }, + "details": null + }, + { + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h9a122567832c9ff4E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 42 } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h51d05a9e9b249329E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ { - "Move": { - "local": 3, - "projection": [] - } + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 12, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + }, + { + "ty": 24, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17ha3656d0fc756ed53E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" }, { - "Field": [ - 0, - 9 - ] + "ty": 22, + "span": 44, + "mutability": "Not" } - ] - } - } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] - } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 - }, - "span": 27 - } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } ] - } - }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17ha3656d0fc756ed53E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } + }, + "details": null } - }, - "details": null - } - ], - "types": [ - [ - 25, - { - "RigidTy": "Bool" - } ], - [ - 2, - { - "RigidTy": { - "Int": "I8" - } - } - ], - [ - 9, - { - "RigidTy": { - "Uint": "U8" - } - } - ], - [ - 16, - { - "RigidTy": { - "Int": "I32" - } - } + "types": [ + [ + 25, + { + "RigidTy": "Bool" + } + ], + [ + 16, + { + "RigidTy": { + "Int": "I32" + } + } + ], + [ + 6, + { + "RigidTy": { + "Int": "Isize" + } + } + ], + [ + 9, + { + "RigidTy": { + "Uint": "U8" + } + } + ], + [ + 2, + { + "RigidTy": { + "Int": "I8" + } + } + ] ], - [ - 6, - { - "RigidTy": { - "Int": "Isize" - } - } - ] - ], - "debug": null -} + "debug": null +} \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/arithmetic/unary.state b/kmir/src/tests/integration/data/exec-smir/arithmetic/unary.state index c038a0bfb..b5e026aa5 100644 --- a/kmir/src/tests/integration/data/exec-smir/arithmetic/unary.state +++ b/kmir/src/tests/integration/data/exec-smir/arithmetic/unary.state @@ -27,14 +27,14 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 255 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( Moved ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 255 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( Moved ) ListItem ( Moved ) ) , ty ( 26 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 0 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 122 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( BoolVal ( true ) , ty ( 25 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -122 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 0 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 122 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( BoolVal ( true ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -122 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) ListItem ( Moved ) @@ -42,12 +42,12 @@ .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 10 ) ) ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionContinue ) , span: span ( 52 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUnaryOp ( unOpNot , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUnaryOp ( unOpNot , operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x85" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 11 ) ) ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUnaryOp ( unOpNot , operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 12 ) ) ) ) ) ) , span: span ( 58 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 13 ) ) ) ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , expected: false , msg: assertMessageOverflowNeg ( operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 53 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUnaryOp ( unOpNeg , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 59 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 52 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 62 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 63 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 64 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 53 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 61 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 62 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "c" ) , sourceInfo: sourceInfo (... span: span ( 63 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "d" ) , sourceInfo: sourceInfo (... span: span ( 64 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 66 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) , expected: false , msg: assertMessageOverflow ( binOpAdd , operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x7f" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 9 ) ) ) ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 10 ) ) ) ) ) , target: basicBlockIdx ( 1 ) , unwind: unwindActionContinue ) , span: span ( 52 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUnaryOp ( unOpNot , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUnaryOp ( unOpNot , operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x85" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 11 ) ) ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUnaryOp ( unOpNot , operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 12 ) ) ) ) ) ) , span: span ( 58 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 13 ) ) ) ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: assert (... cond: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , expected: false , msg: assertMessageOverflowNeg ( operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 53 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUnaryOp ( unOpNeg , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 59 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 52 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 62 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 63 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 64 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 53 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 61 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 62 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "c" ) , sourceInfo: sourceInfo (... span: span ( 63 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "d" ) , sourceInfo: sourceInfo (... span: span ( 64 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 66 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/assign-cast/assign-cast.smir.json b/kmir/src/tests/integration/data/exec-smir/assign-cast/assign-cast.smir.json index 2b5c079a7..a7b2eb531 100644 --- a/kmir/src/tests/integration/data/exec-smir/assign-cast/assign-cast.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/assign-cast/assign-cast.smir.json @@ -1,2161 +1 @@ -{ - "name": "assign_cast", - "crate_id": 13002952174156868308, - "allocs": [], - "functions": [ - [ - 20, - { - "IntrinsicSym": "black_box" - } - ], - [ - 14, - { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h0c5508395a66cec3E" - } - ], - [ - 21, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h9a7856aa69d6d138E" - } - ], - [ - 23, - { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h3af2b128a918c128E" - } - ], - [ - 19, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h288039b41f3b1bacE" - } - ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h41dadfed205e19edE" - } - ], - [ - 30, - { - "NoOpSym": "" - } - ], - [ - 0, - { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" - } - ] - ], - "uneval_consts": [], - "items": [ - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h0a70c56a5c4492dfE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h9a7856aa69d6d138E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN11assign_cast4main17ha51d0dbb589964c1E", - "mono_item_kind": { - "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 128, - 128 - ], - "provenance": { - "ptrs": [] - }, - "align": 2, - "mutability": "Mut" - } - }, - "ty": 25, - "id": 9 - } - } - } - } - ] - }, - "span": 51 - }, - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - 2 - ] - } - ] - }, - "span": 52 - }, - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - 26 - ] - } - ] - }, - "span": 53 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 1, - "projection": [] - } - }, - 16 - ] - } - ] - }, - "span": 54 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 2, - "projection": [] - } - }, - 26 - ] - } - ] - }, - "span": 55 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 4, - "projection": [] - } - }, - 27 - ] - } - ] - }, - "span": 56 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 3, - "projection": [] - } - }, - 2 - ] - } - ] - }, - "span": 57 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 4, - "projection": [] - } - }, - 2 - ] - } - ] - }, - "span": 58 - }, - { - "kind": { - "Assign": [ - { - "local": 9, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 3, - "projection": [] - } - }, - 25 - ] - } - ] - }, - "span": 59 - }, - { - "kind": { - "Assign": [ - { - "local": 10, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 4, - "projection": [] - } - }, - 28 - ] - } - ] - }, - "span": 60 - }, - { - "kind": { - "Assign": [ - { - "local": 11, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 2, - "projection": [] - } - }, - 25 - ] - } - ] - }, - "span": 61 - }, - { - "kind": { - "Assign": [ - { - "local": 12, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 4, - "projection": [] - } - }, - 29 - ] - } - ] - }, - "span": 62 - }, - { - "kind": { - "Assign": [ - { - "local": 13, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 3, - "projection": [] - } - }, - 9 - ] - } - ] - }, - "span": 63 - }, - { - "kind": { - "Assign": [ - { - "local": 14, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 4, - "projection": [] - } - }, - 9 - ] - } - ] - }, - "span": 64 - }, - { - "kind": { - "Assign": [ - { - "local": 15, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Copy": { - "local": 6, - "projection": [] - } - }, - 28 - ] - } - ] - }, - "span": 65 - } - ], - "terminator": { - "kind": "Return", - "span": 50 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 66, - "mutability": "Mut" - }, - { - "ty": 25, - "span": 67, - "mutability": "Not" - }, - { - "ty": 2, - "span": 68, - "mutability": "Not" - }, - { - "ty": 26, - "span": 69, - "mutability": "Not" - }, - { - "ty": 16, - "span": 70, - "mutability": "Not" - }, - { - "ty": 26, - "span": 71, - "mutability": "Not" - }, - { - "ty": 27, - "span": 72, - "mutability": "Not" - }, - { - "ty": 2, - "span": 73, - "mutability": "Not" - }, - { - "ty": 2, - "span": 74, - "mutability": "Not" - }, - { - "ty": 25, - "span": 75, - "mutability": "Not" - }, - { - "ty": 28, - "span": 76, - "mutability": "Not" - }, - { - "ty": 25, - "span": 77, - "mutability": "Not" - }, - { - "ty": 29, - "span": 78, - "mutability": "Not" - }, - { - "ty": 9, - "span": 79, - "mutability": "Not" - }, - { - "ty": 9, - "span": 80, - "mutability": "Not" - }, - { - "ty": 28, - "span": 81, - "mutability": "Not" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "a", - "source_info": { - "span": 67, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "b", - "source_info": { - "span": 68, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "c", - "source_info": { - "span": 69, - "scope": 3 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "d", - "source_info": { - "span": 70, - "scope": 4 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "e", - "source_info": { - "span": 71, - "scope": 5 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "f", - "source_info": { - "span": 72, - "scope": 6 - }, - "composite": null, - "value": { - "Place": { - "local": 6, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "g", - "source_info": { - "span": 73, - "scope": 7 - }, - "composite": null, - "value": { - "Place": { - "local": 7, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "h", - "source_info": { - "span": 74, - "scope": 8 - }, - "composite": null, - "value": { - "Place": { - "local": 8, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "i", - "source_info": { - "span": 75, - "scope": 9 - }, - "composite": null, - "value": { - "Place": { - "local": 9, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "j", - "source_info": { - "span": 76, - "scope": 10 - }, - "composite": null, - "value": { - "Place": { - "local": 10, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "k", - "source_info": { - "span": 77, - "scope": 11 - }, - "composite": null, - "value": { - "Place": { - "local": 11, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "l", - "source_info": { - "span": 78, - "scope": 12 - }, - "composite": null, - "value": { - "Place": { - "local": 12, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "m", - "source_info": { - "span": 79, - "scope": 13 - }, - "composite": null, - "value": { - "Place": { - "local": 13, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "n", - "source_info": { - "span": 80, - "scope": 14 - }, - "composite": null, - "value": { - "Place": { - "local": 14, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "o", - "source_info": { - "span": 81, - "scope": 15 - }, - "composite": null, - "value": { - "Place": { - "local": 15, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 82 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h41dadfed205e19edE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb5b25907048cfcaeE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h0c5508395a66cec3E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 17, - "id": 8 - } - } - } - } - ] - }, - "span": 46 - } - ], - "terminator": { - "kind": "Return", - "span": 45 - } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h3af2b128a918c128E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] - } - ] - } - } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] - } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 - }, - "span": 27 - } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h288039b41f3b1bacE", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start17h5f5fa8aba711bbb4E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] - } - ] - } - } - } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 - } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - } - ], - "types": [ - [ - 6, - { - "RigidTy": { - "Int": "Isize" - } - } - ], - [ - 29, - { - "RigidTy": { - "Uint": "U64" - } - } - ], - [ - 9, - { - "RigidTy": { - "Uint": "U8" - } - } - ], - [ - 2, - { - "RigidTy": { - "Int": "I8" - } - } - ], - [ - 26, - { - "RigidTy": { - "Int": "I16" - } - } - ], - [ - 28, - { - "RigidTy": { - "Uint": "U32" - } - } - ], - [ - 25, - { - "RigidTy": { - "Uint": "U16" - } - } - ], - [ - 16, - { - "RigidTy": { - "Int": "I32" - } - } - ], - [ - 27, - { - "RigidTy": { - "Int": "I64" - } - } - ] - ], - "debug": null -} +{"name":"assign_cast2","crate_id":2350940226393625358,"allocs":[],"functions":[[21,{"NormalSym":"_ZN4core3ops8function6FnOnce9call_once17h011c262af6fc81d1E"}],[13,{"NormalSym":"_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h2ac90369701c0f15E"}],[23,{"NormalSym":"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h57c7180edb6a8d4dE"}],[14,{"NormalSym":"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h3f80f4d2567d1397E"}],[0,{"NormalSym":"_ZN3std2rt19lang_start_internal17h018b8394ba015d86E"}],[33,{"NoOpSym":""}],[20,{"IntrinsicSym":"black_box"}],[19,{"NormalSym":"_ZN4core3ops8function6FnOnce9call_once17hf72b8252ed673ed3E"}]],"uneval_consts":[],"items":[{"symbol_name":"_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h11453166664855b3E","mono_item_kind":{"MonoItemFn":{"name":"std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>","id":4,"body":[{"blocks":[{"statements":[],"terminator":{"kind":"Return","span":44}}],"locals":[{"ty":1,"span":44,"mutability":"Mut"},{"ty":22,"span":44,"mutability":"Not"}],"arg_count":1,"var_debug_info":[],"spread_arg":null,"span":44}]}},"details":null},{"symbol_name":"_ZN3std2rt10lang_start17h28b446e5bad970fcE","mono_item_kind":{"MonoItemFn":{"name":"std::rt::lang_start::<()>","id":0,"body":[{"blocks":[{"statements":[{"kind":{"StorageLive":5},"span":1},{"kind":{"StorageLive":6},"span":2},{"kind":{"StorageLive":8},"span":3},{"kind":{"Assign":[{"local":8,"projection":[]},{"Aggregate":[{"Closure":[1,[{"Type":1},{"Type":2},{"Type":3},{"Type":4}]]},[{"Copy":{"local":1,"projection":[]}}]]}]},"span":3},{"kind":{"Assign":[{"local":7,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":8,"projection":[]}]}]},"span":2},{"kind":{"Assign":[{"local":6,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Copy":{"local":7,"projection":[]}},5]}]},"span":2}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":0,"user_ty":null,"const_":{"kind":"ZeroSized","ty":0,"id":0}}},"args":[{"Move":{"local":6,"projection":[]}},{"Move":{"local":2,"projection":[]}},{"Move":{"local":3,"projection":[]}},{"Move":{"local":4,"projection":[]}}],"destination":{"local":5,"projection":[]},"target":1,"unwind":"Continue"}},"span":1}},{"statements":[{"kind":{"StorageDead":6},"span":5},{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Copy":{"local":5,"projection":[{"Downcast":0},{"Field":[0,6]}]}}}]},"span":6},{"kind":{"StorageDead":8},"span":7},{"kind":{"StorageDead":5},"span":7}],"terminator":{"kind":"Return","span":4}}],"locals":[{"ty":6,"span":8,"mutability":"Mut"},{"ty":7,"span":9,"mutability":"Not"},{"ty":6,"span":10,"mutability":"Not"},{"ty":8,"span":11,"mutability":"Not"},{"ty":9,"span":12,"mutability":"Not"},{"ty":10,"span":1,"mutability":"Mut"},{"ty":5,"span":2,"mutability":"Mut"},{"ty":11,"span":2,"mutability":"Not"},{"ty":12,"span":3,"mutability":"Not"}],"arg_count":4,"var_debug_info":[{"name":"main","source_info":{"span":9,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":[]}},"argument_index":1},{"name":"argc","source_info":{"span":10,"scope":0},"composite":null,"value":{"Place":{"local":2,"projection":[]}},"argument_index":2},{"name":"argv","source_info":{"span":11,"scope":0},"composite":null,"value":{"Place":{"local":3,"projection":[]}},"argument_index":3},{"name":"sigpipe","source_info":{"span":12,"scope":0},"composite":null,"value":{"Place":{"local":4,"projection":[]}},"argument_index":4},{"name":"v","source_info":{"span":6,"scope":1},"composite":null,"value":{"Place":{"local":0,"projection":[]}},"argument_index":null}],"spread_arg":null,"span":13}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h7179fe126d65311fE","mono_item_kind":{"MonoItemFn":{"name":"<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once","id":3,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":43,"user_ty":null,"const_":{"kind":"ZeroSized","ty":21,"id":6}}},"args":[{"Move":{"local":1,"projection":["Deref"]}},{"Move":{"local":2,"projection":[]}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}}],"locals":[{"ty":16,"span":43,"mutability":"Mut"},{"ty":22,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null},{"symbol_name":"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h57c7180edb6a8d4dE","mono_item_kind":{"MonoItemFn":{"name":"std::rt::lang_start::<()>::{closure#0}","id":1,"body":[{"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":16},{"kind":{"StorageLive":3},"span":15},{"kind":{"StorageLive":4},"span":17},{"kind":{"Assign":[{"local":4,"projection":[]},{"Use":{"Copy":{"local":1,"projection":["Deref",{"Field":[0,7]}]}}}]},"span":17}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":14,"user_ty":null,"const_":{"kind":"ZeroSized","ty":13,"id":1}}},"args":[{"Move":{"local":4,"projection":[]}}],"destination":{"local":3,"projection":[]},"target":1,"unwind":"Continue"}},"span":15}},{"statements":[{"kind":{"StorageDead":4},"span":19}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":18,"user_ty":null,"const_":{"kind":"ZeroSized","ty":14,"id":2}}},"args":[{"Move":{"local":3,"projection":[]}}],"destination":{"local":2,"projection":[]},"target":2,"unwind":"Continue"}},"span":16}},{"statements":[{"kind":{"StorageDead":3},"span":21},{"kind":{"StorageLive":5},"span":22},{"kind":{"Assign":[{"local":5,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":2,"projection":[{"Field":[0,15]}]}]}]},"span":22},{"kind":{"StorageLive":6},"span":23},{"kind":{"Assign":[{"local":6,"projection":[]},{"Use":{"Copy":{"local":2,"projection":[{"Field":[0,15]},{"Field":[0,9]}]}}}]},"span":23},{"kind":{"Assign":[{"local":0,"projection":[]},{"Cast":["IntToInt",{"Move":{"local":6,"projection":[]}},16]}]},"span":24},{"kind":{"StorageDead":6},"span":25},{"kind":{"StorageDead":5},"span":26},{"kind":{"StorageDead":2},"span":27}],"terminator":{"kind":"Return","span":20}}],"locals":[{"ty":16,"span":28,"mutability":"Mut"},{"ty":11,"span":3,"mutability":"Mut"},{"ty":17,"span":16,"mutability":"Mut"},{"ty":1,"span":15,"mutability":"Mut"},{"ty":7,"span":17,"mutability":"Mut"},{"ty":18,"span":22,"mutability":"Mut"},{"ty":9,"span":23,"mutability":"Mut"}],"arg_count":1,"var_debug_info":[{"name":"main","source_info":{"span":9,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":["Deref",{"Field":[0,7]}]}},"argument_index":null},{"name":"self","source_info":{"span":29,"scope":1},"composite":null,"value":{"Place":{"local":2,"projection":[]}},"argument_index":1},{"name":"self","source_info":{"span":30,"scope":2},"composite":null,"value":{"Place":{"local":5,"projection":[]}},"argument_index":1}],"spread_arg":null,"span":3}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce9call_once17hf72b8252ed673ed3E","mono_item_kind":{"MonoItemFn":{"name":">::call_once","id":3,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Move":{"local":1,"projection":[]}},"args":[],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}}],"locals":[{"ty":1,"span":43,"mutability":"Mut"},{"ty":7,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null},{"symbol_name":"_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h2ac90369701c0f15E","mono_item_kind":{"MonoItemFn":{"name":"std::sys::backtrace::__rust_begin_short_backtrace::","id":2,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":31,"user_ty":null,"const_":{"kind":"ZeroSized","ty":19,"id":3}}},"args":[{"Move":{"local":1,"projection":[]}},{"Constant":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":33}},{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":34,"user_ty":null,"const_":{"kind":"ZeroSized","ty":20,"id":5}}},"args":[{"Constant":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}}],"destination":{"local":2,"projection":[]},"target":2,"unwind":"Unreachable"}},"span":35}},{"statements":[],"terminator":{"kind":"Return","span":36}}],"locals":[{"ty":1,"span":37,"mutability":"Mut"},{"ty":7,"span":38,"mutability":"Not"},{"ty":1,"span":39,"mutability":"Not"}],"arg_count":1,"var_debug_info":[{"name":"f","source_info":{"span":38,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":[]}},"argument_index":1},{"name":"result","source_info":{"span":40,"scope":1},"composite":null,"value":{"Place":{"local":0,"projection":[]}},"argument_index":null},{"name":"dummy","source_info":{"span":41,"scope":2},"composite":null,"value":{"Const":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}},"argument_index":1}],"spread_arg":null,"span":42}]}},"details":null},{"symbol_name":"_ZN12assign_cast24main17h62f0e7a858f55442E","mono_item_kind":{"MonoItemFn":{"name":"main","id":6,"body":[{"blocks":[{"statements":[{"kind":{"Assign":[{"local":1,"projection":[]},{"Use":{"Constant":{"span":51,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[128,128],"provenance":{"ptrs":[]},"align":2,"mutability":"Mut"}},"ty":25,"id":9}}}}]},"span":51},{"kind":{"Assign":[{"local":2,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":1,"projection":[]}},2]}]},"span":52},{"kind":{"Assign":[{"local":3,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":1,"projection":[]}},26]}]},"span":53},{"kind":{"Assign":[{"local":4,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":1,"projection":[]}},16]}]},"span":54},{"kind":{"Assign":[{"local":5,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":2,"projection":[]}},26]}]},"span":55},{"kind":{"Assign":[{"local":6,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":4,"projection":[]}},27]}]},"span":56},{"kind":{"Assign":[{"local":7,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":3,"projection":[]}},2]}]},"span":57},{"kind":{"Assign":[{"local":8,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":4,"projection":[]}},2]}]},"span":58},{"kind":{"Assign":[{"local":9,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":3,"projection":[]}},25]}]},"span":59},{"kind":{"Assign":[{"local":10,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":4,"projection":[]}},28]}]},"span":60},{"kind":{"Assign":[{"local":11,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":2,"projection":[]}},25]}]},"span":61},{"kind":{"Assign":[{"local":12,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":4,"projection":[]}},29]}]},"span":62},{"kind":{"Assign":[{"local":13,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":3,"projection":[]}},9]}]},"span":63},{"kind":{"Assign":[{"local":14,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":4,"projection":[]}},9]}]},"span":64},{"kind":{"Assign":[{"local":15,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":6,"projection":[]}},28]}]},"span":65}],"terminator":{"kind":"Return","span":50}}],"locals":[{"ty":1,"span":66,"mutability":"Mut"},{"ty":25,"span":67,"mutability":"Not"},{"ty":2,"span":68,"mutability":"Not"},{"ty":26,"span":69,"mutability":"Not"},{"ty":16,"span":70,"mutability":"Not"},{"ty":26,"span":71,"mutability":"Not"},{"ty":27,"span":72,"mutability":"Not"},{"ty":2,"span":73,"mutability":"Not"},{"ty":2,"span":74,"mutability":"Not"},{"ty":25,"span":75,"mutability":"Not"},{"ty":28,"span":76,"mutability":"Not"},{"ty":25,"span":77,"mutability":"Not"},{"ty":29,"span":78,"mutability":"Not"},{"ty":9,"span":79,"mutability":"Not"},{"ty":9,"span":80,"mutability":"Not"},{"ty":28,"span":81,"mutability":"Not"}],"arg_count":0,"var_debug_info":[{"name":"a","source_info":{"span":67,"scope":1},"composite":null,"value":{"Place":{"local":1,"projection":[]}},"argument_index":null},{"name":"b","source_info":{"span":68,"scope":2},"composite":null,"value":{"Place":{"local":2,"projection":[]}},"argument_index":null},{"name":"c","source_info":{"span":69,"scope":3},"composite":null,"value":{"Place":{"local":3,"projection":[]}},"argument_index":null},{"name":"d","source_info":{"span":70,"scope":4},"composite":null,"value":{"Place":{"local":4,"projection":[]}},"argument_index":null},{"name":"e","source_info":{"span":71,"scope":5},"composite":null,"value":{"Place":{"local":5,"projection":[]}},"argument_index":null},{"name":"f","source_info":{"span":72,"scope":6},"composite":null,"value":{"Place":{"local":6,"projection":[]}},"argument_index":null},{"name":"g","source_info":{"span":73,"scope":7},"composite":null,"value":{"Place":{"local":7,"projection":[]}},"argument_index":null},{"name":"h","source_info":{"span":74,"scope":8},"composite":null,"value":{"Place":{"local":8,"projection":[]}},"argument_index":null},{"name":"i","source_info":{"span":75,"scope":9},"composite":null,"value":{"Place":{"local":9,"projection":[]}},"argument_index":null},{"name":"j","source_info":{"span":76,"scope":10},"composite":null,"value":{"Place":{"local":10,"projection":[]}},"argument_index":null},{"name":"k","source_info":{"span":77,"scope":11},"composite":null,"value":{"Place":{"local":11,"projection":[]}},"argument_index":null},{"name":"l","source_info":{"span":78,"scope":12},"composite":null,"value":{"Place":{"local":12,"projection":[]}},"argument_index":null},{"name":"m","source_info":{"span":79,"scope":13},"composite":null,"value":{"Place":{"local":13,"projection":[]}},"argument_index":null},{"name":"n","source_info":{"span":80,"scope":14},"composite":null,"value":{"Place":{"local":14,"projection":[]}},"argument_index":null},{"name":"o","source_info":{"span":81,"scope":15},"composite":null,"value":{"Place":{"local":15,"projection":[]}},"argument_index":null}],"spread_arg":null,"span":82}]}},"details":null},{"symbol_name":"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h3f80f4d2567d1397E","mono_item_kind":{"MonoItemFn":{"name":"<() as std::process::Termination>::report","id":5,"body":[{"blocks":[{"statements":[{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Constant":{"span":46,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[0],"provenance":{"ptrs":[]},"align":1,"mutability":"Mut"}},"ty":17,"id":8}}}}]},"span":46}],"terminator":{"kind":"Return","span":45}}],"locals":[{"ty":17,"span":47,"mutability":"Mut"},{"ty":1,"span":48,"mutability":"Not"}],"arg_count":1,"var_debug_info":[{"name":"self","source_info":{"span":48,"scope":0},"composite":null,"value":{"Const":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}},"argument_index":1}],"spread_arg":null,"span":49}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce9call_once17h011c262af6fc81d1E","mono_item_kind":{"MonoItemFn":{"name":"<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once","id":3,"body":[{"blocks":[{"statements":[{"kind":{"Assign":[{"local":3,"projection":[]},{"Ref":[{"kind":"ReErased"},{"Mut":{"kind":"Default"}},{"local":1,"projection":[]}]}]},"span":43}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":43,"user_ty":null,"const_":{"kind":"ZeroSized","ty":23,"id":7}}},"args":[{"Move":{"local":3,"projection":[]}},{"Move":{"local":2,"projection":[]}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":{"Cleanup":3}}},"span":43}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":2,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":4,"unwind":"Terminate"}},"span":43}},{"statements":[],"terminator":{"kind":"Resume","span":43}}],"locals":[{"ty":16,"span":43,"mutability":"Mut"},{"ty":12,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"},{"ty":24,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null}],"types":[[6,{"RigidTy":{"Int":"Isize"}}],[25,{"RigidTy":{"Uint":"U16"}}],[26,{"RigidTy":{"Int":"I16"}}],[28,{"RigidTy":{"Uint":"U32"}}],[29,{"RigidTy":{"Uint":"U64"}}],[27,{"RigidTy":{"Int":"I64"}}],[9,{"RigidTy":{"Uint":"U8"}}],[2,{"RigidTy":{"Int":"I8"}}],[16,{"RigidTy":{"Int":"I32"}}]],"debug":null} \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/assign-cast/assign-cast.state b/kmir/src/tests/integration/data/exec-smir/assign-cast/assign-cast.state index 326e8ac9e..356632fa5 100644 --- a/kmir/src/tests/integration/data/exec-smir/assign-cast/assign-cast.state +++ b/kmir/src/tests/integration/data/exec-smir/assign-cast/assign-cast.state @@ -25,34 +25,34 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 32896 , 16 , false ) , ty ( 25 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -32640 , 16 , true ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 32896 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -128 , 16 , true ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 32896 , 64 , true ) , ty ( 27 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 32896 , 16 , false ) , ty ( 25 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 32896 , 32 , false ) , ty ( 28 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 65408 , 16 , false ) , ty ( 25 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 32896 , 64 , false ) , ty ( 29 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 128 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 128 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 32896 , 32 , false ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 32896 , 16 , false ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -32640 , 16 , true ) , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 32896 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -128 , 16 , true ) , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 32896 , 64 , true ) , ty ( 27 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( -128 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 32896 , 16 , false ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 32896 , 32 , false ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 65408 , 16 , false ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 32896 , 64 , false ) , ty ( 29 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 128 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 128 , 8 , false ) , ty ( 9 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 32896 , 32 , false ) , ty ( 28 ) , mutabilityNot ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 2 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 51 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 2 ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 53 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 27 ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 2 ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 2 ) ) ) , span: span ( 58 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 28 ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 29 ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 13 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 9 ) ) ) , span: span ( 63 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 9 ) ) ) , span: span ( 64 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 15 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 28 ) ) ) , span: span ( 65 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 50 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 67 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 68 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 69 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 16 ) , span: span ( 70 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 71 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 72 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 73 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 74 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 77 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 78 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 79 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 80 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 81 ) , mut: mutabilityNot ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 68 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "c" ) , sourceInfo: sourceInfo (... span: span ( 69 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "d" ) , sourceInfo: sourceInfo (... span: span ( 70 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 71 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 72 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "g" ) , sourceInfo: sourceInfo (... span: span ( 73 ) , scope: sourceScope ( 7 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "h" ) , sourceInfo: sourceInfo (... span: span ( 74 ) , scope: sourceScope ( 8 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "i" ) , sourceInfo: sourceInfo (... span: span ( 75 ) , scope: sourceScope ( 9 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "j" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 10 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "k" ) , sourceInfo: sourceInfo (... span: span ( 77 ) , scope: sourceScope ( 11 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "l" ) , sourceInfo: sourceInfo (... span: span ( 78 ) , scope: sourceScope ( 12 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "m" ) , sourceInfo: sourceInfo (... span: span ( 79 ) , scope: sourceScope ( 13 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 13 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "n" ) , sourceInfo: sourceInfo (... span: span ( 80 ) , scope: sourceScope ( 14 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "o" ) , sourceInfo: sourceInfo (... span: span ( 81 ) , scope: sourceScope ( 15 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 82 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x80\x80" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 2 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 51 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 2 ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 53 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 27 ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 2 ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 2 ) ) ) , span: span ( 58 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 28 ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , ty ( 25 ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 29 ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 13 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , ty ( 9 ) ) ) , span: span ( 63 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , ty ( 9 ) ) ) , span: span ( 64 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 15 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 28 ) ) ) , span: span ( 65 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 50 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 67 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 68 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 69 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 16 ) , span: span ( 70 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 71 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 72 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 73 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 74 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 77 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 78 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 79 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 9 ) , span: span ( 80 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 81 ) , mut: mutabilityNot ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 68 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "c" ) , sourceInfo: sourceInfo (... span: span ( 69 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "d" ) , sourceInfo: sourceInfo (... span: span ( 70 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 71 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 72 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "g" ) , sourceInfo: sourceInfo (... span: span ( 73 ) , scope: sourceScope ( 7 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "h" ) , sourceInfo: sourceInfo (... span: span ( 74 ) , scope: sourceScope ( 8 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "i" ) , sourceInfo: sourceInfo (... span: span ( 75 ) , scope: sourceScope ( 9 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "j" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 10 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "k" ) , sourceInfo: sourceInfo (... span: span ( 77 ) , scope: sourceScope ( 11 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "l" ) , sourceInfo: sourceInfo (... span: span ( 78 ) , scope: sourceScope ( 12 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "m" ) , sourceInfo: sourceInfo (... span: span ( 79 ) , scope: sourceScope ( 13 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 13 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "n" ) , sourceInfo: sourceInfo (... span: span ( 80 ) , scope: sourceScope ( 14 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "o" ) , sourceInfo: sourceInfo (... span: span ( 81 ) , scope: sourceScope ( 15 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 82 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.23.state b/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.23.state index fcae5e94d..d0916639e 100644 --- a/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.23.state +++ b/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.23.state @@ -25,25 +25,25 @@ unwindActionContinue - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 11 , 16 , true ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 11 , 16 , true ) , ty ( 28 ) , mutabilityNot ) ) - ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) ) ) - ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) ) + ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) ) ) + ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) ) ) - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "a" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 2 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 58 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 59 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 61 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "s" ) , sourceInfo: sourceInfo (... span: span ( 61 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 62 ) ) ) ) - ty ( 27 ) |-> monoItemFn (... name: symbol ( "b" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 66 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "_s" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "_t" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 10 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 52 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 53 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 54 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 55 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 25 ) |-> monoItemFn (... name: symbol ( "a" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 2 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 58 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 59 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 61 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "s" ) , sourceInfo: sourceInfo (... span: span ( 61 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 62 ) ) .Bodies ) + ty ( 27 ) |-> monoItemFn (... name: symbol ( "b" ) , id: defId ( 8 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 66 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "_s" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "_t" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 10 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 52 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 53 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 54 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 55 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.27.state b/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.27.state deleted file mode 100644 index fcae5e94d..000000000 --- a/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.27.state +++ /dev/null @@ -1,62 +0,0 @@ - - - #execBlock ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) ) ~> .K - - - noReturn - - - ty ( 27 ) - - - - ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) ) - - - ty ( 25 ) - - - place (... local: local ( 0 ) , projection: .ProjectionElems ) - - - someBasicBlockIdx ( basicBlockIdx ( 1 ) ) - - - unwindActionContinue - - - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 11 , 16 , true ) , ty ( 28 ) , mutabilityNot ) ) - - - - ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 10 , 64 , false ) , ty ( 26 ) , mutabilityNot ) ) ) ) - ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) ) - - - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "a" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 2 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 58 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 59 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 61 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "s" ) , sourceInfo: sourceInfo (... span: span ( 61 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 62 ) ) ) ) - ty ( 27 ) |-> monoItemFn (... name: symbol ( "b" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 66 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "_s" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "_t" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 10 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 52 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 53 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 54 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 55 ) ) ) ) - - - .Map - - - symbol ( "main" ) - - - ty ( 2 ) |-> rigidTyInt ( intTyI8 ) - ty ( 6 ) |-> rigidTyInt ( intTyIsize ) - ty ( 9 ) |-> rigidTyUint ( uintTyU8 ) - ty ( 16 ) |-> rigidTyInt ( intTyI32 ) - ty ( 26 ) |-> rigidTyUint ( uintTyUsize ) - ty ( 28 ) |-> rigidTyInt ( intTyI16 ) - - \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.smir.json b/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.smir.json index 0e8e20a56..7073dd042 100644 --- a/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/call-with-args/main-a-b-with-int.smir.json @@ -1,1731 +1,1753 @@ { - "name": "main_a_b_with_int", - "crate_id": 9173310213495213748, - "allocs": [], - "functions": [ - [ - 14, - { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h4d159dfcc92a7787E" - } + "name": "main_a_b_with_int", + "crate_id": 9173310213495213748, + "allocs": [], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + } + ], + [ + 32, + { + "NoOpSym": "" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h7792b3db2c12fcdbE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h3c6de04caa56bbcbE" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h8fe3c7bcc442bebeE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h446dd3779801f357E" + } + ], + [ + 27, + { + "NormalSym": "_ZN17main_a_b_with_int1b17h92605682282418dbE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h4d159dfcc92a7787E" + } + ], + [ + 25, + { + "NormalSym": "_ZN17main_a_b_with_int1a17h55bc10e786653b90E" + } + ] ], - [ - 19, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h3c6de04caa56bbcbE" - } - ], - [ - 27, - { - "NormalSym": "_ZN17main_a_b_with_int1b17h92605682282418dbE" - } - ], - [ - 0, - { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" - } - ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h7792b3db2c12fcdbE" - } - ], - [ - 21, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h8fe3c7bcc442bebeE" - } - ], - [ - 29, - { - "NoOpSym": "" - } - ], - [ - 20, - { - "IntrinsicSym": "black_box" - } - ], - [ - 23, - { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h446dd3779801f357E" - } - ], - [ - 25, - { - "NormalSym": "_ZN17main_a_b_with_int1a17h55bc10e786653b90E" - } - ] - ], - "uneval_consts": [], - "items": [ - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h7792b3db2c12fcdbE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, + "uneval_consts": [], + "items": [ + { + "symbol_name": "_ZN17main_a_b_with_int4main17h37f7f24b825d5c5dE", + "mono_item_kind": { + "MonoItemFn": { + "name": "main", + "id": 6, + "body": [ { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 25, + "id": 9 + } + } + }, + "args": [ + { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 10, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 26, + "id": 10 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 53 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 54, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [], + "spread_arg": null, + "span": 55 } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h8fe3c7bcc442bebeE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h446dd3779801f357E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ { - "Move": { - "local": 2, - "projection": [] - } + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } + }, + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 15 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + }, + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 3 } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 + ] } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN17main_a_b_with_int4main17h37f7f24b825d5c5dE", - "mono_item_kind": { - "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 9 - } - } - }, - "args": [ + }, + "details": null + }, + { + "symbol_name": "_ZN17main_a_b_with_int1b17h92605682282418dbE", + "mono_item_kind": { + "MonoItemFn": { + "name": "b", + "id": 8, + "body": [ { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 10, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 8, - "mutability": "Mut" + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 63 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 64, + "mutability": "Mut" + }, + { + "ty": 26, + "span": 65, + "mutability": "Not" + }, + { + "ty": 28, + "span": 66, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "_s", + "source_info": { + "span": 65, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "_t", + "source_info": { + "span": 66, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 } - }, - "ty": 26, - "id": 10 - } - } + ], + "spread_arg": null, + "span": 67 } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 52 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 53 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 54, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [], - "spread_arg": null, - "span": 55 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h343aa02f84d02209E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN17main_a_b_with_int1a17h55bc10e786653b90E", - "mono_item_kind": { - "MonoItemFn": { - "name": "a", - "id": 7, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 56, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 11 - } - } - }, - "args": [ - { - "Copy": { - "local": 1, - "projection": [] - } - }, + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start17hfb4d01dc98c21e58E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": [ { - "Constant": { - "span": 57, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 11, - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 2, - "mutability": "Mut" + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } + } + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 + } } - }, - "ty": 28, - "id": 12 - } - } + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, + { + "ty": 8, + "span": 11, + "mutability": "Not" + }, + { + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 58 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 59 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 60, - "mutability": "Mut" - }, - { - "ty": 26, - "span": 61, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "s", - "source_info": { - "span": 61, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 62 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h96705bf254340eb7E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h96705bf254340eb7E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ { - "Move": { - "local": 2, - "projection": [] - } + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN17main_a_b_with_int1b17h92605682282418dbE", - "mono_item_kind": { - "MonoItemFn": { - "name": "b", - "id": 8, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 63 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 64, - "mutability": "Mut" - }, - { - "ty": 26, - "span": 65, - "mutability": "Not" - }, - { - "ty": 28, - "span": 66, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [ - { - "name": "_s", - "source_info": { - "span": 65, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "_t", - "source_info": { - "span": 66, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - } - ], - "spread_arg": null, - "span": 67 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h4d159dfcc92a7787E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h8fe3c7bcc442bebeE", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } ], - "provenance": { - "ptrs": [] - }, - "align": 1, + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, "mutability": "Mut" - } }, - "ty": 17, - "id": 8 - } - } - } + { + "ty": 12, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + }, + { + "ty": 24, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ] - }, - "span": 46 - } - ], - "terminator": { - "kind": "Return", - "span": 45 + ] } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start17hfb4d01dc98c21e58E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h3c6de04caa56bbcbE", + "mono_item_kind": { + "MonoItemFn": { + "name": ">::call_once", + "id": 3, + "body": [ { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } } - } - ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, + }, + "details": null + }, + { + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h7792b3db2c12fcdbE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ { - "Use": { - "Copy": { - "local": 5, - "projection": [ + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, { - "Downcast": 0 + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } }, { - "Field": [ - 0, - 6 - ] + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } } - ] - } - } - } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 - } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h3c6de04caa56bbcbE", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 42 } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h446dd3779801f357E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, + }, + "details": null + }, + { + "symbol_name": "_ZN17main_a_b_with_int1a17h55bc10e786653b90E", + "mono_item_kind": { + "MonoItemFn": { + "name": "a", + "id": 7, + "body": [ { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 56, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 27, + "id": 11 + } + } + }, + "args": [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 57, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 11, + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 2, + "mutability": "Mut" + } + }, + "ty": 28, + "id": 12 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 58 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 59 + } } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } + ], + "locals": [ + { + "ty": 1, + "span": 60, + "mutability": "Mut" + }, + { + "ty": 26, + "span": 61, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "s", + "source_info": { + "span": 61, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 62 } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h343aa02f84d02209E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ { - "Move": { - "local": 3, - "projection": [] - } + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 44, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h4d159dfcc92a7787E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" }, { - "Field": [ - 0, - 9 - ] + "ty": 1, + "span": 48, + "mutability": "Not" } - ] - } - } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 49 } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 - }, - "span": 27 - } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } ] - } - }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - } - ], - "types": [ - [ - 9, - { - "RigidTy": { - "Uint": "U8" - } - } - ], - [ - 28, - { - "RigidTy": { - "Int": "I16" - } - } - ], - [ - 6, - { - "RigidTy": { - "Int": "Isize" - } - } - ], - [ - 2, - { - "RigidTy": { - "Int": "I8" + } + }, + "details": null } - } ], - [ - 26, - { - "RigidTy": { - "Uint": "Usize" - } - } + "types": [ + [ + 28, + { + "RigidTy": { + "Int": "I16" + } + } + ], + [ + 16, + { + "RigidTy": { + "Int": "I32" + } + } + ], + [ + 6, + { + "RigidTy": { + "Int": "Isize" + } + } + ], + [ + 26, + { + "RigidTy": { + "Uint": "Usize" + } + } + ], + [ + 2, + { + "RigidTy": { + "Int": "I8" + } + } + ], + [ + 9, + { + "RigidTy": { + "Uint": "U8" + } + } + ] ], - [ - 16, - { - "RigidTy": { - "Int": "I32" - } - } - ] - ], - "debug": null -} + "debug": null +} \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.19.state b/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.19.state index 0fc3fa20d..a1f32b1d1 100644 --- a/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.19.state +++ b/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.19.state @@ -25,24 +25,24 @@ unwindActionContinue - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( StackFrame ( ty ( 25 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) ) - ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) ) - ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) ) ) + ListItem ( StackFrame ( ty ( 25 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) ) ) + ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( 0 ) , projection: .ProjectionElems ) , someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwindActionContinue , ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) ) ) + ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) ) ) - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "a" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 10 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 57 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 58 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 59 ) ) ) ) - ty ( 26 ) |-> monoItemFn (... name: symbol ( "b" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 62 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 63 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 64 ) ) ) ) - ty ( 27 ) |-> monoItemFn (... name: symbol ( "c" ) , id: defId ( 9 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 52 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 53 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 54 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 25 ) |-> monoItemFn (... name: symbol ( "a" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 10 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 57 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 58 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 59 ) ) .Bodies ) + ty ( 26 ) |-> monoItemFn (... name: symbol ( "b" ) , id: defId ( 8 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 62 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 63 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 64 ) ) .Bodies ) + ty ( 27 ) |-> monoItemFn (... name: symbol ( "c" ) , id: defId ( 9 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 52 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 53 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 54 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.run.state b/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.run.state index df42932d5..17446d8ca 100644 --- a/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.run.state +++ b/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.run.state @@ -26,22 +26,22 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "a" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 10 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 57 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 58 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 59 ) ) ) ) - ty ( 26 ) |-> monoItemFn (... name: symbol ( "b" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 62 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 63 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 64 ) ) ) ) - ty ( 27 ) |-> monoItemFn (... name: symbol ( "c" ) , id: defId ( 9 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 52 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 53 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 54 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 25 ) |-> monoItemFn (... name: symbol ( "a" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 10 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 57 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 58 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 59 ) ) .Bodies ) + ty ( 26 ) |-> monoItemFn (... name: symbol ( "b" ) , id: defId ( 8 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 11 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 62 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 63 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 64 ) ) .Bodies ) + ty ( 27 ) |-> monoItemFn (... name: symbol ( "c" ) , id: defId ( 9 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 52 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 53 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: .VarDebugInfos , spreadArg: noLocal , span: span ( 54 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.smir.json b/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.smir.json index ebdb4e0d4..9d40edd0d 100644 --- a/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/main-a-b-c/main-a-b-c.smir.json @@ -1,1659 +1 @@ -{ - "name": "main_a_b_c", - "crate_id": 2129868149476588123, - "allocs": [], - "functions": [ - [ - 23, - { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h88c62a39fb1b342bE" - } - ], - [ - 25, - { - "NormalSym": "_ZN10main_a_b_c1a17hf96e7944faad0bd0E" - } - ], - [ - 21, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h5775674bf1184c46E" - } - ], - [ - 0, - { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" - } - ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h98accbb0a20ea4f5E" - } - ], - [ - 31, - { - "NoOpSym": "" - } - ], - [ - 14, - { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17he57786f330055d2dE" - } - ], - [ - 20, - { - "IntrinsicSym": "black_box" - } - ], - [ - 27, - { - "NormalSym": "_ZN10main_a_b_c1c17h59101d2318335bbdE" - } - ], - [ - 26, - { - "NormalSym": "_ZN10main_a_b_c1b17hbedf65f2538ce3adE" - } - ], - [ - 19, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hde47e0bf03682721E" - } - ] - ], - "uneval_consts": [], - "items": [ - { - "symbol_name": "_ZN10main_a_b_c1c17h59101d2318335bbdE", - "mono_item_kind": { - "MonoItemFn": { - "name": "c", - "id": 9, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 65 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 66, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [], - "spread_arg": null, - "span": 67 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN10main_a_b_c4main17hcaca459da1b06b9fE", - "mono_item_kind": { - "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 9 - } - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 51 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 52 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 53, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [], - "spread_arg": null, - "span": 54 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start17he509fe31442a28c4E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] - } - ] - } - } - } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 - } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hba596ab1e21f4dfaE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h5775674bf1184c46E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h88c62a39fb1b342bE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] - } - ] - } - } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] - } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 - }, - "span": 27 - } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h651e2df3ec0dc2ccE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN10main_a_b_c1a17hf96e7944faad0bd0E", - "mono_item_kind": { - "MonoItemFn": { - "name": "a", - "id": 7, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 55, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 26, - "id": 10 - } - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 56 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 57 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 58, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [], - "spread_arg": null, - "span": 59 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h98accbb0a20ea4f5E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN10main_a_b_c1b17hbedf65f2538ce3adE", - "mono_item_kind": { - "MonoItemFn": { - "name": "b", - "id": 8, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 60, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 11 - } - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 61 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 62 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 63, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [], - "spread_arg": null, - "span": 64 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17he57786f330055d2dE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 17, - "id": 8 - } - } - } - } - ] - }, - "span": 46 - } - ], - "terminator": { - "kind": "Return", - "span": 45 - } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hde47e0bf03682721E", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - } - ], - "types": [ - [ - 6, - { - "RigidTy": { - "Int": "Isize" - } - } - ], - [ - 9, - { - "RigidTy": { - "Uint": "U8" - } - } - ], - [ - 16, - { - "RigidTy": { - "Int": "I32" - } - } - ], - [ - 2, - { - "RigidTy": { - "Int": "I8" - } - } - ] - ], - "debug": null -} +{"name":"main_a_b_c","crate_id":2129868149476588123,"allocs":[],"functions":[[13,{"NormalSym":"_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h98accbb0a20ea4f5E"}],[21,{"NormalSym":"_ZN4core3ops8function6FnOnce9call_once17h5775674bf1184c46E"}],[23,{"NormalSym":"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h88c62a39fb1b342bE"}],[14,{"NormalSym":"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17he57786f330055d2dE"}],[19,{"NormalSym":"_ZN4core3ops8function6FnOnce9call_once17hde47e0bf03682721E"}],[20,{"IntrinsicSym":"black_box"}],[27,{"NormalSym":"_ZN10main_a_b_c1c17h59101d2318335bbdE"}],[25,{"NormalSym":"_ZN10main_a_b_c1a17hf96e7944faad0bd0E"}],[0,{"NormalSym":"_ZN3std2rt19lang_start_internal17h018b8394ba015d86E"}],[26,{"NormalSym":"_ZN10main_a_b_c1b17hbedf65f2538ce3adE"}],[31,{"NoOpSym":""}]],"uneval_consts":[],"items":[{"symbol_name":"_ZN3std2rt10lang_start17he509fe31442a28c4E","mono_item_kind":{"MonoItemFn":{"name":"std::rt::lang_start::<()>","id":0,"body":[{"blocks":[{"statements":[{"kind":{"StorageLive":5},"span":1},{"kind":{"StorageLive":6},"span":2},{"kind":{"StorageLive":8},"span":3},{"kind":{"Assign":[{"local":8,"projection":[]},{"Aggregate":[{"Closure":[1,[{"Type":1},{"Type":2},{"Type":3},{"Type":4}]]},[{"Copy":{"local":1,"projection":[]}}]]}]},"span":3},{"kind":{"Assign":[{"local":7,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":8,"projection":[]}]}]},"span":2},{"kind":{"Assign":[{"local":6,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Copy":{"local":7,"projection":[]}},5]}]},"span":2}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":0,"user_ty":null,"const_":{"kind":"ZeroSized","ty":0,"id":0}}},"args":[{"Move":{"local":6,"projection":[]}},{"Move":{"local":2,"projection":[]}},{"Move":{"local":3,"projection":[]}},{"Move":{"local":4,"projection":[]}}],"destination":{"local":5,"projection":[]},"target":1,"unwind":"Continue"}},"span":1}},{"statements":[{"kind":{"StorageDead":6},"span":5},{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Copy":{"local":5,"projection":[{"Downcast":0},{"Field":[0,6]}]}}}]},"span":6},{"kind":{"StorageDead":8},"span":7},{"kind":{"StorageDead":5},"span":7}],"terminator":{"kind":"Return","span":4}}],"locals":[{"ty":6,"span":8,"mutability":"Mut"},{"ty":7,"span":9,"mutability":"Not"},{"ty":6,"span":10,"mutability":"Not"},{"ty":8,"span":11,"mutability":"Not"},{"ty":9,"span":12,"mutability":"Not"},{"ty":10,"span":1,"mutability":"Mut"},{"ty":5,"span":2,"mutability":"Mut"},{"ty":11,"span":2,"mutability":"Not"},{"ty":12,"span":3,"mutability":"Not"}],"arg_count":4,"var_debug_info":[{"name":"main","source_info":{"span":9,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":[]}},"argument_index":1},{"name":"argc","source_info":{"span":10,"scope":0},"composite":null,"value":{"Place":{"local":2,"projection":[]}},"argument_index":2},{"name":"argv","source_info":{"span":11,"scope":0},"composite":null,"value":{"Place":{"local":3,"projection":[]}},"argument_index":3},{"name":"sigpipe","source_info":{"span":12,"scope":0},"composite":null,"value":{"Place":{"local":4,"projection":[]}},"argument_index":4},{"name":"v","source_info":{"span":6,"scope":1},"composite":null,"value":{"Place":{"local":0,"projection":[]}},"argument_index":null}],"spread_arg":null,"span":13}]}},"details":null},{"symbol_name":"_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h98accbb0a20ea4f5E","mono_item_kind":{"MonoItemFn":{"name":"std::sys::backtrace::__rust_begin_short_backtrace::","id":2,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":31,"user_ty":null,"const_":{"kind":"ZeroSized","ty":19,"id":3}}},"args":[{"Move":{"local":1,"projection":[]}},{"Constant":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":33}},{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":34,"user_ty":null,"const_":{"kind":"ZeroSized","ty":20,"id":5}}},"args":[{"Constant":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}}],"destination":{"local":2,"projection":[]},"target":2,"unwind":"Unreachable"}},"span":35}},{"statements":[],"terminator":{"kind":"Return","span":36}}],"locals":[{"ty":1,"span":37,"mutability":"Mut"},{"ty":7,"span":38,"mutability":"Not"},{"ty":1,"span":39,"mutability":"Not"}],"arg_count":1,"var_debug_info":[{"name":"f","source_info":{"span":38,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":[]}},"argument_index":1},{"name":"result","source_info":{"span":40,"scope":1},"composite":null,"value":{"Place":{"local":0,"projection":[]}},"argument_index":null},{"name":"dummy","source_info":{"span":41,"scope":2},"composite":null,"value":{"Const":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}},"argument_index":1}],"spread_arg":null,"span":42}]}},"details":null},{"symbol_name":"_ZN10main_a_b_c1b17hbedf65f2538ce3adE","mono_item_kind":{"MonoItemFn":{"name":"b","id":8,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":60,"user_ty":null,"const_":{"kind":"ZeroSized","ty":27,"id":11}}},"args":[],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":61}},{"statements":[],"terminator":{"kind":"Return","span":62}}],"locals":[{"ty":1,"span":63,"mutability":"Mut"}],"arg_count":0,"var_debug_info":[],"spread_arg":null,"span":64}]}},"details":null},{"symbol_name":"_ZN10main_a_b_c4main17hcaca459da1b06b9fE","mono_item_kind":{"MonoItemFn":{"name":"main","id":6,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":50,"user_ty":null,"const_":{"kind":"ZeroSized","ty":25,"id":9}}},"args":[],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":51}},{"statements":[],"terminator":{"kind":"Return","span":52}}],"locals":[{"ty":1,"span":53,"mutability":"Mut"}],"arg_count":0,"var_debug_info":[],"spread_arg":null,"span":54}]}},"details":null},{"symbol_name":"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17he57786f330055d2dE","mono_item_kind":{"MonoItemFn":{"name":"<() as std::process::Termination>::report","id":5,"body":[{"blocks":[{"statements":[{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Constant":{"span":46,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[0],"provenance":{"ptrs":[]},"align":1,"mutability":"Mut"}},"ty":17,"id":8}}}}]},"span":46}],"terminator":{"kind":"Return","span":45}}],"locals":[{"ty":17,"span":47,"mutability":"Mut"},{"ty":1,"span":48,"mutability":"Not"}],"arg_count":1,"var_debug_info":[{"name":"self","source_info":{"span":48,"scope":0},"composite":null,"value":{"Const":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}},"argument_index":1}],"spread_arg":null,"span":49}]}},"details":null},{"symbol_name":"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h88c62a39fb1b342bE","mono_item_kind":{"MonoItemFn":{"name":"std::rt::lang_start::<()>::{closure#0}","id":1,"body":[{"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":16},{"kind":{"StorageLive":3},"span":15},{"kind":{"StorageLive":4},"span":17},{"kind":{"Assign":[{"local":4,"projection":[]},{"Use":{"Copy":{"local":1,"projection":["Deref",{"Field":[0,7]}]}}}]},"span":17}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":14,"user_ty":null,"const_":{"kind":"ZeroSized","ty":13,"id":1}}},"args":[{"Move":{"local":4,"projection":[]}}],"destination":{"local":3,"projection":[]},"target":1,"unwind":"Continue"}},"span":15}},{"statements":[{"kind":{"StorageDead":4},"span":19}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":18,"user_ty":null,"const_":{"kind":"ZeroSized","ty":14,"id":2}}},"args":[{"Move":{"local":3,"projection":[]}}],"destination":{"local":2,"projection":[]},"target":2,"unwind":"Continue"}},"span":16}},{"statements":[{"kind":{"StorageDead":3},"span":21},{"kind":{"StorageLive":5},"span":22},{"kind":{"Assign":[{"local":5,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":2,"projection":[{"Field":[0,15]}]}]}]},"span":22},{"kind":{"StorageLive":6},"span":23},{"kind":{"Assign":[{"local":6,"projection":[]},{"Use":{"Copy":{"local":2,"projection":[{"Field":[0,15]},{"Field":[0,9]}]}}}]},"span":23},{"kind":{"Assign":[{"local":0,"projection":[]},{"Cast":["IntToInt",{"Move":{"local":6,"projection":[]}},16]}]},"span":24},{"kind":{"StorageDead":6},"span":25},{"kind":{"StorageDead":5},"span":26},{"kind":{"StorageDead":2},"span":27}],"terminator":{"kind":"Return","span":20}}],"locals":[{"ty":16,"span":28,"mutability":"Mut"},{"ty":11,"span":3,"mutability":"Mut"},{"ty":17,"span":16,"mutability":"Mut"},{"ty":1,"span":15,"mutability":"Mut"},{"ty":7,"span":17,"mutability":"Mut"},{"ty":18,"span":22,"mutability":"Mut"},{"ty":9,"span":23,"mutability":"Mut"}],"arg_count":1,"var_debug_info":[{"name":"main","source_info":{"span":9,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":["Deref",{"Field":[0,7]}]}},"argument_index":null},{"name":"self","source_info":{"span":29,"scope":1},"composite":null,"value":{"Place":{"local":2,"projection":[]}},"argument_index":1},{"name":"self","source_info":{"span":30,"scope":2},"composite":null,"value":{"Place":{"local":5,"projection":[]}},"argument_index":1}],"spread_arg":null,"span":3}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce9call_once17hde47e0bf03682721E","mono_item_kind":{"MonoItemFn":{"name":">::call_once","id":3,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Move":{"local":1,"projection":[]}},"args":[],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}}],"locals":[{"ty":1,"span":43,"mutability":"Mut"},{"ty":7,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null},{"symbol_name":"_ZN10main_a_b_c1a17hf96e7944faad0bd0E","mono_item_kind":{"MonoItemFn":{"name":"a","id":7,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":55,"user_ty":null,"const_":{"kind":"ZeroSized","ty":26,"id":10}}},"args":[],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":56}},{"statements":[],"terminator":{"kind":"Return","span":57}}],"locals":[{"ty":1,"span":58,"mutability":"Mut"}],"arg_count":0,"var_debug_info":[],"spread_arg":null,"span":59}]}},"details":null},{"symbol_name":"_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h651e2df3ec0dc2ccE","mono_item_kind":{"MonoItemFn":{"name":"std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>","id":4,"body":[{"blocks":[{"statements":[],"terminator":{"kind":"Return","span":44}}],"locals":[{"ty":1,"span":44,"mutability":"Mut"},{"ty":22,"span":44,"mutability":"Not"}],"arg_count":1,"var_debug_info":[],"spread_arg":null,"span":44}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hba596ab1e21f4dfaE","mono_item_kind":{"MonoItemFn":{"name":"<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once","id":3,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":43,"user_ty":null,"const_":{"kind":"ZeroSized","ty":21,"id":6}}},"args":[{"Move":{"local":1,"projection":["Deref"]}},{"Move":{"local":2,"projection":[]}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}}],"locals":[{"ty":16,"span":43,"mutability":"Mut"},{"ty":22,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null},{"symbol_name":"_ZN10main_a_b_c1c17h59101d2318335bbdE","mono_item_kind":{"MonoItemFn":{"name":"c","id":9,"body":[{"blocks":[{"statements":[],"terminator":{"kind":"Return","span":65}}],"locals":[{"ty":1,"span":66,"mutability":"Mut"}],"arg_count":0,"var_debug_info":[],"spread_arg":null,"span":67}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce9call_once17h5775674bf1184c46E","mono_item_kind":{"MonoItemFn":{"name":"<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once","id":3,"body":[{"blocks":[{"statements":[{"kind":{"Assign":[{"local":3,"projection":[]},{"Ref":[{"kind":"ReErased"},{"Mut":{"kind":"Default"}},{"local":1,"projection":[]}]}]},"span":43}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":43,"user_ty":null,"const_":{"kind":"ZeroSized","ty":23,"id":7}}},"args":[{"Move":{"local":3,"projection":[]}},{"Move":{"local":2,"projection":[]}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":{"Cleanup":3}}},"span":43}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":2,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":4,"unwind":"Terminate"}},"span":43}},{"statements":[],"terminator":{"kind":"Resume","span":43}}],"locals":[{"ty":16,"span":43,"mutability":"Mut"},{"ty":12,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"},{"ty":24,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null}],"types":[[6,{"RigidTy":{"Int":"Isize"}}],[2,{"RigidTy":{"Int":"I8"}}],[9,{"RigidTy":{"Uint":"U8"}}],[16,{"RigidTy":{"Int":"I32"}}]],"debug":null} \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/references/doubleRef.smir.json b/kmir/src/tests/integration/data/exec-smir/references/doubleRef.smir.json index 804577cd2..0b911681f 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/doubleRef.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/references/doubleRef.smir.json @@ -85,27 +85,27 @@ ], "functions": [ [ - 0, + 31, { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + "NormalSym": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h98d9c9cd2a8bb147E" } ], [ - 13, + 0, { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hec86baa41f4f8d10E" + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" } ], [ - 14, + 13, { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h86b66706186f3344E" + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hec86baa41f4f8d10E" } ], [ - 20, + 23, { - "IntrinsicSym": "black_box" + "NormalSym": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17ha0daa83d4f9d3acfE" } ], [ @@ -115,2513 +115,2537 @@ } ], [ - 19, + 26, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h6d3c11e59c981c95E" + "NormalSym": "_ZN4core3cmp5impls53_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$i8$GT$2eq17he63f1e1ae1cab784E" } ], [ - 31, + 35, { - "NormalSym": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h98d9c9cd2a8bb147E" + "NoOpSym": "" } ], [ - 37, + 14, { - "NoOpSym": "" + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h86b66706186f3344E" } ], [ - 26, + 19, { - "NormalSym": "_ZN4core3cmp5impls53_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$i8$GT$2eq17he63f1e1ae1cab784E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h6d3c11e59c981c95E" } ], [ - 23, + 20, { - "NormalSym": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17ha0daa83d4f9d3acfE" + "IntrinsicSym": "black_box" } ], [ - 29, + 27, { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h639586c1861cdbc5E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h4216c834d85c12c9E" } ], [ - 27, + 29, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h4216c834d85c12c9E" + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h639586c1861cdbc5E" } ] ], "uneval_consts": [], "items": [ { - "symbol_name": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h98d9c9cd2a8bb147E", + "symbol_name": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17ha0daa83d4f9d3acfE", "mono_item_kind": { "MonoItemFn": { - "name": "std::cmp::impls::::eq", + "name": "std::cmp::impls::::eq", "id": 4, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref" - ] + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } } } - } - ] + ] + }, + "span": 54 }, - "span": 54 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - "Deref" - ] + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } } } - } - ] - }, - "span": 55 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 6 - } - } + ] }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] + "span": 55 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 52, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 26, + "id": 7 + } } }, - { - "Move": { - "local": 4, - "projection": [] + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 53 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 56 - } - } - ], - "locals": [ - { - "ty": 21, - "span": 57, - "mutability": "Mut" - }, - { - "ty": 24, - "span": 58, - "mutability": "Not" - }, - { - "ty": 24, - "span": 59, - "mutability": "Not" - }, - { - "ty": 25, - "span": 58, - "mutability": "Mut" - }, - { - "ty": 25, - "span": 59, - "mutability": "Mut" - } - ], - "arg_count": 2, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 58, - "scope": 0 + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 53 + } }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 } + } + ], + "locals": [ + { + "ty": 21, + "span": 57, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 58, + "mutability": "Not" }, - "argument_index": 1 - }, - { - "name": "other", - "source_info": { + { + "ty": 25, "span": 59, - "scope": 0 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 22, + "span": 58, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 59, + "mutability": "Mut" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 58, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 }, - "argument_index": 2 - } - ], - "spread_arg": null, - "span": 60 - } + { + "name": "other", + "source_info": { + "span": 59, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + } + ], + "spread_arg": null, + "span": 60 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h639586c1861cdbc5E", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h4216c834d85c12c9E", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] } - } - ], - "destination": { - "local": 3, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 61 } - }, - "span": 15 - } - }, - { - "statements": [ - { + ], + "terminator": { "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 + "Call": { + "func": { + "Constant": { + "span": 61, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 29, + "id": 9 + } } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 + } }, - "span": 22 - }, - { + "span": 61 + } + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 5, + "Drop": { + "place": { + "local": 1, "projection": [] }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] - } - ] - } - ] + "target": 2, + "unwind": "Continue" + } }, - "span": 22 - }, - { + "span": 61 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 61 + } + }, + { + "statements": [], + "terminator": { "kind": { - "StorageLive": 6 + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] + "span": 61 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 61 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 61, + "mutability": "Mut" + }, + { + "ty": 12, + "span": 61, + "mutability": "Not" + }, + { + "ty": 1, + "span": 61, + "mutability": "Not" + }, + { + "ty": 30, + "span": 61, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 61 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h86b66706186f3344E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 7, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 64, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 10 } - ] + } } } - } - ] - }, - "span": 23 + ] + }, + "span": 64 + } + ], + "terminator": { + "kind": "Return", + "span": 63 + } + } + ], + "locals": [ + { + "ty": 17, + "span": 65, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 66, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 66, + "scope": 0 }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 67 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3cmp5impls53_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$i8$GT$2eq17he63f1e1ae1cab784E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::cmp::impls::::eq", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 44 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] } - }, - 16 - ] - } - ] + } + } + ] + }, + "span": 44 }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 + { + "kind": { + "StorageLive": 4 + }, + "span": 45 }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 46 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 47 }, - "span": 27 + { + "kind": { + "StorageDead": 3 + }, + "span": 47 + } + ], + "terminator": { + "kind": "Return", + "span": 43 } - ], - "terminator": { - "kind": "Return", - "span": 20 } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } + ], + "locals": [ + { + "ty": 21, + "span": 48, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 22, + "span": 49, + "mutability": "Not" }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } + { + "ty": 22, + "span": 50, + "mutability": "Not" + }, + { + "ty": 2, + "span": 44, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } + { + "ty": 2, + "span": 45, + "mutability": "Mut" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 49, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "other", + "source_info": { + "span": 50, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + } + ], + "spread_arg": null, + "span": 51 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std2rt10lang_start17h00fbe264978df755E", + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h639586c1861cdbc5E", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 + { + "kind": { + "StorageLive": 3 + }, + "span": 15 }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 + { + "kind": { + "StorageLive": 4 + }, + "span": 17 }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", { - "Type": 4 + "Field": [ + 0, + 7 + ] } ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] - } } - ] - ] - } - ] - }, - "span": 3 - }, - { + } + } + ] + }, + "span": 17 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 7, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, + "args": [ + { + "Move": { + "local": 4, "projection": [] } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, + } + ], + "destination": { + "local": 3, "projection": [] }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] + "target": 1, + "unwind": "Continue" + } }, - "span": 2 + "span": 15 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } } }, - { - "Move": { - "local": 2, - "projection": [] + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } } + ], + "destination": { + "local": 2, + "projection": [] }, - { - "Move": { - "local": 3, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] } - }, - { - "Move": { - "local": 4, + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } } - } - ], - "destination": { - "local": 5, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 + "span": 23 }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] } - ] - } + }, + 16 + ] } - } - ] + ] + }, + "span": 24 }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 + { + "kind": { + "StorageDead": 5 + }, + "span": 26 }, - "span": 7 + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 } - ], - "terminator": { - "kind": "Return", - "span": 4 } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 + { + "ty": 11, + "span": 3, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 17, + "span": 16, + "mutability": "Mut" }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 + { + "ty": 1, + "span": 15, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } + { + "ty": 7, + "span": 17, + "mutability": "Mut" }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 + { + "ty": 18, + "span": 22, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + }, + "argument_index": null }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 3 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3cmp5impls53_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$i8$GT$2eq17he63f1e1ae1cab784E", + "symbol_name": "_ZN9doubleRef4main17h95ea92da4b4a3e96E", "mono_item_kind": { "MonoItemFn": { - "name": "std::cmp::impls::::eq", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 3 - }, - "span": 44 - }, - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref" - ] + "name": "main", + "id": 8, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 69, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 42 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 11 + } + } } } - } - ] + ] + }, + "span": 69 }, - "span": 44 - }, - { - "kind": { - "StorageLive": 4 + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 70 }, - "span": 45 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 71 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "CopyForDeref": { + "local": 3, "projection": [ "Deref" ] } } - } - ] + ] + }, + "span": 72 }, - "span": 45 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "BinaryOp": [ - "Eq", - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 13, + "projection": [ + "Deref" + ] } } - ] - } - ] - }, - "span": 46 - }, - { - "kind": { - "StorageDead": 4 - }, - "span": 47 - }, - { - "kind": { - "StorageDead": 3 + } + ] + }, + "span": 72 }, - "span": 47 - } - ], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 21, - "span": 48, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 49, - "mutability": "Not" - }, - { - "ty": 22, - "span": 50, - "mutability": "Not" - }, - { - "ty": 2, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 45, - "mutability": "Mut" - } - ], - "arg_count": 2, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 49, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "other", - "source_info": { - "span": 50, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - } - ], - "spread_arg": null, - "span": 51 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h4216c834d85c12c9E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 61 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 61, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 29, - "id": 9 + ] } - } + ] }, - "args": [ - { + "span": 68 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { "Move": { - "local": 3, + "local": 4, "projection": [] } }, - { - "Move": { - "local": 2, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 68 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 8, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 61 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 61 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 61 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] + ] }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 61 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 61 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 61, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 61, - "mutability": "Not" - }, - { - "ty": 1, - "span": 61, - "mutability": "Not" - }, - { - "ty": 30, - "span": 61, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 61 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h484e2183c4c007e2E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 5, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 61, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 8 + "span": 74 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] } - } + ] }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" + "span": 75 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 11, + "projection": [] + } ] } - }, - { - "Move": { - "local": 2, + ] + }, + "span": 76 + }, + { + "kind": { + "Assign": [ + { + "local": 9, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] } - } - ], - "destination": { - "local": 0, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 76 } - }, - "span": 61 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 61 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 61, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 61, - "mutability": "Not" - }, - { - "ty": 1, - "span": 61, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 61 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17ha0daa83d4f9d3acfE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::cmp::impls::::eq", - "id": 4, - "body": { - "blocks": [ - { - "statements": [ - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 73, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 31, + "id": 12 + } + } }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref" - ] + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] } } - } - ] + ], + "destination": { + "local": 7, + "projection": [] + }, + "target": 3, + "unwind": "Continue" + } }, - "span": 54 - }, - { + "span": 73 + } + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 4, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 77, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 32, + "id": 13 + } + } }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - "Deref" - ] + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 33, + "id": 14 + } } } - } - ] + ], + "destination": { + "local": 6, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } }, - "span": 55 + "span": 77 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 26, - "id": 7 - } - } - }, - "args": [ - { + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { "Move": { - "local": 3, + "local": 7, "projection": [] } }, - { - "Move": { - "local": 4, - "projection": [] - } + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 4 } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 53 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 56 - } - } - ], - "locals": [ - { - "ty": 21, - "span": 57, - "mutability": "Mut" - }, - { - "ty": 25, - "span": 58, - "mutability": "Not" - }, - { - "ty": 25, - "span": 59, - "mutability": "Not" - }, - { - "ty": 22, - "span": 58, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 59, - "mutability": "Mut" - } - ], - "arg_count": 2, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 58, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + } + }, + "span": 73 } }, - "argument_index": 1 - }, - { - "name": "other", - "source_info": { - "span": 59, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 78 } }, - "argument_index": 2 - } - ], - "spread_arg": null, - "span": 60 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h6d3c11e59c981c95E", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 5, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 61 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 61 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 61, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 61, - "mutability": "Not" - }, - { - "ty": 1, - "span": 61, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 61 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h86b66706186f3344E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 7, - "body": { - "blocks": [ - { - "statements": [ - { + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 0, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 79, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 32, + "id": 13 + } + } }, - { - "Use": { + "args": [ + { "Constant": { - "span": 64, + "span": 32, "user_ty": null, "const_": { "kind": { "Allocated": { "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, 0 ], "provenance": { - "ptrs": [] + "ptrs": [ + [ + 0, + 1 + ] + ] }, - "align": 1, + "align": 8, "mutability": "Mut" } }, - "ty": 17, - "id": 10 + "ty": 33, + "id": 15 } } } - } - ] + ], + "destination": { + "local": 12, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } }, - "span": 64 + "span": 79 } - ], - "terminator": { - "kind": "Return", - "span": 63 } - } - ], - "locals": [ - { - "ty": 17, - "span": 65, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 66, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 66, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + ], + "locals": [ + { + "ty": 1, + "span": 80, + "mutability": "Mut" + }, + { + "ty": 2, + "span": 81, + "mutability": "Not" + }, + { + "ty": 22, + "span": 82, + "mutability": "Not" + }, + { + "ty": 25, + "span": 83, + "mutability": "Not" + }, + { + "ty": 21, + "span": 68, + "mutability": "Mut" + }, + { + "ty": 2, + "span": 72, + "mutability": "Mut" + }, + { + "ty": 34, + "span": 77, + "mutability": "Mut" + }, + { + "ty": 21, + "span": 73, + "mutability": "Mut" + }, + { + "ty": 24, + "span": 74, + "mutability": "Mut" + }, + { + "ty": 24, + "span": 76, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 76, + "mutability": "Not" + }, + { + "ty": 22, + "span": 75, + "mutability": "Not" + }, + { + "ty": 34, + "span": 79, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 83, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 81, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "y", + "source_info": { + "span": 82, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "z", + "source_info": { + "span": 83, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 84 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h7861fc27b244f735E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 6, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 62 } + } + ], + "locals": [ + { + "ty": 1, + "span": 62, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 67 - } + { + "ty": 28, + "span": 62, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 62 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hec86baa41f4f8d10E", + "symbol_name": "_ZN3std2rt10lang_start17h00fbe264978df755E", "mono_item_kind": { "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] } - } + ] }, - "args": [ - { - "Move": { - "local": 1, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] } - }, - { + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 0, "user_ty": null, "const_": { "kind": "ZeroSized", - "ty": 1, - "id": 4 + "ty": 0, + "id": 0 } } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } } - } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } } } - } - ], - "destination": { - "local": 2, - "projection": [] + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 5 }, - "target": 2, - "unwind": "Unreachable" + "span": 7 } - }, - "span": 35 + ], + "terminator": { + "kind": "Return", + "span": 4 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, + { + "ty": 8, + "span": 11, + "mutability": "Not" + }, + { + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] } - } + }, + "argument_index": 4 }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 + } + ] } }, "details": null }, { - "symbol_name": "_ZN9doubleRef4main17h95ea92da4b4a3e96E", + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hec86baa41f4f8d10E", "mono_item_kind": { "MonoItemFn": { - "name": "main", - "id": 8, - "body": { - "blocks": [ - { - "statements": [ - { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 1, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } }, - { - "Use": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { "Constant": { - "span": 69, + "span": 32, "user_ty": null, "const_": { - "kind": { - "Allocated": { - "bytes": [ - 42 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 11 + "kind": "ZeroSized", + "ty": 1, + "id": 4 } } } - } - ] - }, - "span": 69 - }, - { - "kind": { - "Assign": [ - { - "local": 2, + ], + "destination": { + "local": 0, "projection": [] }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 1, - "projection": [] - } - ] - } - ] + "target": 1, + "unwind": "Continue" + } }, - "span": 70 - }, - { + "span": 33 + } + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 } - ] - } - ] - }, - "span": 71 - }, - { - "kind": { - "Assign": [ - { - "local": 13, - "projection": [] - }, - { - "CopyForDeref": { - "local": 3, - "projection": [ - "Deref" - ] } - } - ] - }, - "span": 72 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] }, - { - "Use": { - "Copy": { - "local": 13, - "projection": [ - "Deref" - ] + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } } - } - ] - }, - "span": 72 - }, - { - "kind": { - "Assign": [ - { - "local": 4, + ], + "destination": { + "local": 2, "projection": [] }, - { - "BinaryOp": [ - "Eq", - { - "Move": { - "local": 5, - "projection": [] - } - }, - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - } - ] - }, - "span": 68 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 4, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 0, - 2 - ] - ], - "otherwise": 1 + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 } } }, - "span": 68 + "argument_index": 1 } - }, - { - "statements": [ - { + ], + "spread_arg": null, + "span": 42 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h484e2183c4c007e2E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 61, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 27, + "id": 8 } - ] - } - ] - }, - "span": 74 - }, - { - "kind": { - "Assign": [ - { - "local": 11, - "projection": [] + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { + "args": [ + { + "Move": { "local": 1, - "projection": [] + "projection": [ + "Deref" + ] } - ] - } - ] - }, - "span": 75 - }, - { - "kind": { - "Assign": [ - { - "local": 10, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 11, + }, + { + "Move": { + "local": 2, "projection": [] } - ] - } - ] - }, - "span": 76 - }, - { - "kind": { - "Assign": [ - { - "local": 9, + } + ], + "destination": { + "local": 0, "projection": [] }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 10, - "projection": [] - } - ] - } - ] + "target": 1, + "unwind": "Continue" + } }, - "span": 76 + "span": 61 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 73, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 31, - "id": 12 - } - } - }, - "args": [ - { + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 61 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 61, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 61, + "mutability": "Not" + }, + { + "ty": 1, + "span": 61, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 61 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h6d3c11e59c981c95E", + "mono_item_kind": { + "MonoItemFn": { + "name": ">::call_once", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Move": { - "local": 8, + "local": 1, "projection": [] } }, - { - "Move": { - "local": 9, - "projection": [] - } - } - ], - "destination": { - "local": 7, - "projection": [] - }, - "target": 3, - "unwind": "Continue" - } - }, - "span": 73 + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 61 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 61 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 61, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 61, + "mutability": "Not" + }, + { + "ty": 1, + "span": 61, + "mutability": "Not" } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 77, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 32, - "id": 13 + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 61 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h98d9c9cd2a8bb147E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::cmp::impls::::eq", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } } - } + ] }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 26, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 0 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 33, - "id": 14 + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } } } - } - ], - "destination": { - "local": 6, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 77 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 7, - "projection": [] - } + ] }, - "targets": { - "branches": [ - [ - 0, - 5 - ] - ], - "otherwise": 4 - } + "span": 55 } - }, - "span": 73 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 78 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 79, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 32, - "id": 13 - } - } - }, - "args": [ - { + ], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 52, "user_ty": null, "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 26, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 1 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 33, - "id": 15 + "kind": "ZeroSized", + "ty": 23, + "id": 6 } } - } - ], - "destination": { - "local": 12, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 79 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 80, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 81, - "mutability": "Not" - }, - { - "ty": 22, - "span": 82, - "mutability": "Not" - }, - { - "ty": 25, - "span": 83, - "mutability": "Not" - }, - { - "ty": 21, - "span": 68, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 72, - "mutability": "Mut" - }, - { - "ty": 34, - "span": 77, - "mutability": "Mut" - }, - { - "ty": 21, - "span": 73, - "mutability": "Mut" - }, - { - "ty": 24, - "span": 74, - "mutability": "Mut" - }, - { - "ty": 24, - "span": 76, - "mutability": "Mut" - }, - { - "ty": 25, - "span": 76, - "mutability": "Not" - }, - { - "ty": 22, - "span": 75, - "mutability": "Not" - }, - { - "ty": 34, - "span": 79, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 83, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 81, - "scope": 1 + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 53 + } }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 } + } + ], + "locals": [ + { + "ty": 21, + "span": 57, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "y", - "source_info": { - "span": 82, - "scope": 2 + { + "ty": 24, + "span": 58, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 24, + "span": 59, + "mutability": "Not" }, - "argument_index": null - }, - { - "name": "z", - "source_info": { - "span": 83, - "scope": 3 + { + "ty": 25, + "span": 58, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } + { + "ty": 25, + "span": 59, + "mutability": "Mut" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 58, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 84 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h7861fc27b244f735E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 6, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 62 + { + "name": "other", + "source_info": { + "span": 59, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 } - } - ], - "locals": [ - { - "ty": 1, - "span": 62, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 62, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 62 - } + ], + "spread_arg": null, + "span": 60 + } + ] } }, "details": null @@ -2629,16 +2653,18 @@ ], "types": [ [ - 21, + 9, { - "RigidTy": "Bool" + "RigidTy": { + "Uint": "U8" + } } ], [ - 2, + 6, { "RigidTy": { - "Int": "I8" + "Int": "Isize" } } ], @@ -2651,18 +2677,16 @@ } ], [ - 9, + 21, { - "RigidTy": { - "Uint": "U8" - } + "RigidTy": "Bool" } ], [ - 6, + 2, { "RigidTy": { - "Int": "Isize" + "Int": "I8" } } ] diff --git a/kmir/src/tests/integration/data/exec-smir/references/doubleRef.state b/kmir/src/tests/integration/data/exec-smir/references/doubleRef.state index ad32c52d7..473de3a2a 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/doubleRef.state +++ b/kmir/src/tests/integration/data/exec-smir/references/doubleRef.state @@ -30,35 +30,35 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 22 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 2 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 22 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 2 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 25 ) , mutabilityNot ) ) ListItem ( Moved ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 34 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 34 ) , mutabilityMut ) ) ListItem ( Moved ) ListItem ( Moved ) ListItem ( Moved ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 11 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 25 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 22 ) , mutabilityNot ) ) - ListItem ( newLocal ( ty ( 34 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 22 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 11 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 22 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 34 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 22 ) , mutabilityMut ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 64 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 64 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 61 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 61 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 61 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::cmp::impls::::eq" ) , id: defId ( 4 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 53 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 56 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 21 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 22 ) , span: span ( 58 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 22 ) , span: span ( 59 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "other" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) ) ) - ty ( 26 ) |-> monoItemFn (... name: symbol ( "std::cmp::impls::::eq" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 44 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 44 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 45 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 45 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 46 ) ) statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 47 ) ) statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 47 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 21 ) , span: span ( 48 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 22 ) , span: span ( 49 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 22 ) , span: span ( 50 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 44 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 45 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 49 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "other" ) , sourceInfo: sourceInfo (... span: span ( 50 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 51 ) ) ) ) - ty ( 27 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 61 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 29 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 61 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 30 ) , span: span ( 61 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 61 ) ) ) ) - ty ( 29 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 31 ) |-> monoItemFn (... name: symbol ( "std::cmp::impls::::eq" ) , id: defId ( 4 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 6 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 53 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 56 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 21 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 24 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 58 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 59 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "other" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 69 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 11 ) ) ) ) ) ) , span: span ( 69 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 70 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) , span: span ( 71 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 13 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 3 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 72 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 13 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 72 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 68 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 68 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 3 ) , projection: .ProjectionElems ) ) ) , span: span ( 74 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 75 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 11 ) , projection: .ProjectionElems ) ) ) , span: span ( 76 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 10 ) , projection: .ProjectionElems ) ) ) , span: span ( 76 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 73 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 12 ) ) ) ) , args: operandMove ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 7 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 3 ) ) , unwind: unwindActionContinue ) , span: span ( 73 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 77 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 32 ) , id: mirConstId ( 13 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 33 ) , id: mirConstId ( 14 ) ) ) ) .Operands , destination: place (... local: local ( 6 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 77 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 5 ) ) .Branches , otherwise: basicBlockIdx ( 4 ) ) ) , span: span ( 73 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 78 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 79 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 32 ) , id: mirConstId ( 13 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 33 ) , id: mirConstId ( 15 ) ) ) ) .Operands , destination: place (... local: local ( 12 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 79 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 80 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 81 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 22 ) , span: span ( 82 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 83 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 68 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 72 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 34 ) , span: span ( 77 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 21 ) , span: span ( 73 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 24 ) , span: span ( 74 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 24 ) , span: span ( 76 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 22 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 34 ) , span: span ( 79 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 22 ) , span: span ( 83 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 81 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 82 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 83 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 84 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 64 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 64 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 61 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 61 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 61 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::cmp::impls::::eq" ) , id: defId ( 4 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 53 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 56 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 21 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 22 ) , span: span ( 58 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 22 ) , span: span ( 59 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "other" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) .Bodies ) + ty ( 26 ) |-> monoItemFn (... name: symbol ( "std::cmp::impls::::eq" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 44 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 44 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 45 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 45 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 46 ) ) statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 47 ) ) statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 47 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 21 ) , span: span ( 48 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 22 ) , span: span ( 49 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 22 ) , span: span ( 50 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 44 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 45 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 49 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "other" ) , sourceInfo: sourceInfo (... span: span ( 50 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 51 ) ) .Bodies ) + ty ( 27 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 61 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 29 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 61 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 30 ) , span: span ( 61 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 61 ) ) .Bodies ) + ty ( 29 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 31 ) |-> monoItemFn (... name: symbol ( "std::cmp::impls::::eq" ) , id: defId ( 4 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 6 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 53 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 56 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 21 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 24 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 58 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 59 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "other" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 8 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 69 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 11 ) ) ) ) ) ) , span: span ( 69 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 70 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) , span: span ( 71 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 13 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 3 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 72 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 13 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 72 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 68 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 68 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 3 ) , projection: .ProjectionElems ) ) ) , span: span ( 74 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 75 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 11 ) , projection: .ProjectionElems ) ) ) , span: span ( 76 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 10 ) , projection: .ProjectionElems ) ) ) , span: span ( 76 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 73 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 12 ) ) ) ) , args: operandMove ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 7 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 3 ) ) , unwind: unwindActionContinue ) , span: span ( 73 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 77 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 32 ) , id: mirConstId ( 13 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 33 ) , id: mirConstId ( 14 ) ) ) ) .Operands , destination: place (... local: local ( 6 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 77 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 5 ) ) .Branches , otherwise: basicBlockIdx ( 4 ) ) ) , span: span ( 73 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 78 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 79 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 32 ) , id: mirConstId ( 13 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 33 ) , id: mirConstId ( 15 ) ) ) ) .Operands , destination: place (... local: local ( 12 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 79 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 80 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 81 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 22 ) , span: span ( 82 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 83 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 68 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 72 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 34 ) , span: span ( 77 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 21 ) , span: span ( 73 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 24 ) , span: span ( 74 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 24 ) , span: span ( 76 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 22 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 34 ) , span: span ( 79 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 22 ) , span: span ( 83 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 81 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 82 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 83 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 84 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/references/mutableRef.smir.json b/kmir/src/tests/integration/data/exec-smir/references/mutableRef.smir.json index 472f5fc06..c0bd3bf34 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/mutableRef.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/references/mutableRef.smir.json @@ -3,7 +3,7 @@ "crate_id": 4352655527695101489, "allocs": [ [ - 3, + 2, { "Memory": { "bytes": [ @@ -30,7 +30,7 @@ 61, 61, 32, - 50, + 51, 50 ], "provenance": { @@ -42,7 +42,7 @@ } ], [ - 2, + 3, { "Memory": { "bytes": [ @@ -69,7 +69,7 @@ 61, 61, 32, - 51, + 50, 50 ], "provenance": { @@ -88,12 +88,6 @@ "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" } ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h05d32a6eb1f1a762E" - } - ], [ 26, { @@ -101,15 +95,15 @@ } ], [ - 21, + 19, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h127646048c4d5d9bE" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h53ed6cdf783ea9f1E" } ], [ - 19, + 13, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h53ed6cdf783ea9f1E" + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h05d32a6eb1f1a762E" } ], [ @@ -118,6 +112,12 @@ "NoOpSym": "" } ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he136e56e1a1dec08E" + } + ], [ 20, { @@ -125,9 +125,9 @@ } ], [ - 23, + 21, { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he136e56e1a1dec08E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h127646048c4d5d9bE" } ], [ @@ -146,447 +146,275 @@ "uneval_consts": [], "items": [ { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he136e56e1a1dec08E", + "symbol_name": "_ZN10mutableRef1f17h63ad688e5733c791E", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] + "name": "f", + "id": 7, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [ + "Deref" + ] + }, + { + "Use": { + "Constant": { + "span": 69, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 32 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 15 } - ] + } } } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 70 } - }, - "span": 15 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 + ], + "terminator": { + "kind": "Return", + "span": 68 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 + ], + "locals": [ + { + "ty": 1, + "span": 71, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 72, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "y", + "source_info": { + "span": 72, + "scope": 0 }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } }, - { + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 73 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h05d32a6eb1f1a762E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] + } }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] - } - ] + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { + ], + "destination": { "local": 0, "projection": [] }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] - } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 + "target": 1, + "unwind": "Continue" + } }, - "span": 27 + "span": 33 } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" } - ] + }, + "span": 35 } }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 } + } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 + { + "ty": 7, + "span": 38, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h8964be79673df687E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 42 + } + ] } }, "details": null @@ -597,1317 +425,1372 @@ "MonoItemFn": { "name": "std::rt::lang_start::<()>", "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 + { + "kind": { + "StorageLive": 6 + }, + "span": 2 }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 + { + "kind": { + "StorageLive": 8 + }, + "span": 3 }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ { - "Copy": { - "local": 1, - "projection": [] + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } } - } + ] ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] + } + ] + }, + "span": 3 }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, "projection": [] } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 + ] } - } + ] }, - "args": [ - { - "Move": { + "span": 2 + }, + { + "kind": { + "Assign": [ + { "local": 6, "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] } - }, - { - "Move": { - "local": 2, - "projection": [] + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } } }, - { - "Move": { - "local": 3, - "projection": [] + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } } + ], + "destination": { + "local": 5, + "projection": [] }, - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 5, - "projection": [] + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 + "span": 5 }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] - } - ] + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } } } - } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 + ] + }, + "span": 6 }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 + { + "kind": { + "StorageDead": 8 + }, + "span": 7 }, - "span": 7 + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 } - ], - "terminator": { - "kind": "Return", - "span": 4 } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "ty": 7, + "span": 9, + "mutability": "Not" }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { + { + "ty": 6, "span": 10, - "scope": 0 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { + { + "ty": 8, "span": 11, - "scope": 0 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { + { + "ty": 9, "span": 12, - "scope": 0 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } + { + "ty": 10, + "span": 1, + "mutability": "Mut" }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 + { + "ty": 5, + "span": 2, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h53ed6cdf783ea9f1E", + "symbol_name": "_ZN10mutableRef4main17h93ec5d833ede8e5dE", "mono_item_kind": { "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, + "name": "main", + "id": 6, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 52, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 42 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 10 + } + } + } + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 53 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 25, + "id": 9 + } + } + }, + "args": [ + { + "Copy": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [] + } + } + } + ] + }, + "span": 55 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 32, + 2 + ] + ], + "otherwise": 3 } + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [ + "Deref" + ] + }, + { + "Use": { + "Constant": { + "span": 58, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 22 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 11 + } + } + } + } + ] }, - "args": [], - "destination": { - "local": 0, - "projection": [] + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [] + } + } + } + ] }, - "target": 1, - "unwind": "Continue" + "span": 60 } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h680150bf862ecf00E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 0, - "projection": [] + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } }, - { - "Use": { + "targets": { + "branches": [ + [ + 22, + 4 + ] + ], + "otherwise": 5 + } + } + }, + "span": 56 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 61, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 26, + "id": 12 + } + } + }, + "args": [ + { "Constant": { - "span": 46, + "span": 32, "user_ty": null, "const_": { "kind": { "Allocated": { "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, 0 ], "provenance": { - "ptrs": [] + "ptrs": [ + [ + 0, + 0 + ] + ] }, - "align": 1, + "align": 8, "mutability": "Mut" } }, - "ty": 17, - "id": 8 + "ty": 27, + "id": 13 } } } - } - ] - }, - "span": 46 - } - ], - "terminator": { - "kind": "Return", - "span": 45 - } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN10mutableRef1f17h63ad688e5733c791E", - "mono_item_kind": { - "MonoItemFn": { - "name": "f", - "id": 7, - "body": { - "blocks": [ - { - "statements": [ - { + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 61 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 62 + } + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 1, - "projection": [ - "Deref" - ] + "Call": { + "func": { + "Constant": { + "span": 63, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 26, + "id": 12 + } + } }, - { - "Use": { + "args": [ + { "Constant": { - "span": 69, + "span": 32, "user_ty": null, "const_": { "kind": { "Allocated": { "bytes": [ - 32 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, + 0 ], "provenance": { - "ptrs": [] + "ptrs": [ + [ + 0, + 1 + ] + ] }, - "align": 1, + "align": 8, "mutability": "Mut" } }, - "ty": 2, - "id": 15 + "ty": 27, + "id": 14 } } } - } - ] + ], + "destination": { + "local": 8, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } }, - "span": 70 + "span": 63 } - ], - "terminator": { - "kind": "Return", - "span": 68 } - } - ], - "locals": [ - { - "ty": 1, - "span": 71, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 72, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "y", - "source_info": { - "span": 72, - "scope": 0 + ], + "locals": [ + { + "ty": 1, + "span": 64, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "ty": 2, + "span": 65, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 51, + "mutability": "Not" + }, + { + "ty": 28, + "span": 53, + "mutability": "Mut" + }, + { + "ty": 2, + "span": 55, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 61, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 66, + "mutability": "Not" + }, + { + "ty": 2, + "span": 60, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 63, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 65, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 73 - } + { + "name": "xref", + "source_info": { + "span": 66, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 6, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 67 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h05d32a6eb1f1a762E", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h53ed6cdf783ea9f1E", "mono_item_kind": { "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { + "name": ">::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Move": { "local": 1, "projection": [] } }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 } }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } + } + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } + { + "ty": 7, + "span": 43, + "mutability": "Not" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hca02380bc74841bfE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 + { + "ty": 1, + "span": 43, + "mutability": "Not" } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null }, { - "symbol_name": "_ZN10mutableRef4main17h93ec5d833ede8e5dE", + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he136e56e1a1dec08E", "mono_item_kind": { "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 42 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] } - }, - "ty": 2, - "id": 10 + ] } } } - } - ] - }, - "span": 52 - }, - { + ] + }, + "span": 17 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, + "args": [ + { + "Move": { + "local": 4, "projection": [] } - ] - } - ] + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 53 + "span": 15 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 9 - } - } - }, - "args": [ - { - "Copy": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 }, - "target": 1, - "unwind": "Continue" + "span": 19 } - }, - "span": 51 - } - }, - { - "statements": [ - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 4, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } }, - { - "Use": { - "Copy": { - "local": 1, + "args": [ + { + "Move": { + "local": 3, "projection": [] } } - } - ] - }, - "span": 55 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 4, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 32, - 2 - ] ], - "otherwise": 3 - } - } - }, - "span": 54 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 6, + "destination": { + "local": 2, "projection": [] }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] + ] + } + ] + }, + "span": 22 }, - "span": 57 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [ - "Deref" - ] - }, - { - "Use": { - "Constant": { - "span": 58, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 22 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] } - }, - "ty": 2, - "id": 11 + ] } } } - } - ] + ] + }, + "span": 23 }, - "span": 59 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [] - } + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] } - } - ] + ] + }, + "span": 24 }, - "span": 60 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 7, - "projection": [] - } + { + "kind": { + "StorageDead": 6 }, - "targets": { - "branches": [ - [ - 22, - 4 - ] - ], - "otherwise": 5 - } + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 27 } - }, - "span": 56 + ], + "terminator": { + "kind": "Return", + "span": 20 + } } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 61, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 26, - "id": 12 - } - } - }, - "args": [ + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 25, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 0 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 27, - "id": 13 - } - } + "Field": [ + 0, + 7 + ] } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": null, - "unwind": "Continue" + ] } }, - "span": 61 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 62 + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 63, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 26, - "id": 12 - } - } - }, - "args": [ - { + ], + "spread_arg": null, + "span": 3 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h8964be79673df687E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 43, "user_ty": null, "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 25, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 1 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 27, - "id": 14 + "kind": "ZeroSized", + "ty": 21, + "id": 6 } } - } - ], - "destination": { - "local": 8, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 63 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 64, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 65, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 51, - "mutability": "Not" - }, - { - "ty": 28, - "span": 53, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 55, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 61, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 66, - "mutability": "Not" - }, - { - "ty": 2, - "span": 60, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 63, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 65, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 } }, - "argument_index": null - }, - { - "name": "xref", - "source_info": { - "span": 66, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 6, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 67 - } + { + "ty": 22, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null @@ -1918,153 +1801,290 @@ "MonoItemFn": { "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, + "args": [ + { + "Move": { + "local": 3, "projection": [] } - ] + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 } - ] + } }, "span": 43 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 + "target": 2, + "unwind": "Continue" } - } - }, - "span": 43 + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 12, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + }, + { + "ty": 24, + "span": 43, + "mutability": "Not" } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h680150bf862ecf00E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } + } + } + } + ] }, - "target": 2, - "unwind": "Continue" + "span": 46 } - }, - "span": 43 + ], + "terminator": { + "kind": "Return", + "span": 45 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 48, + "mutability": "Not" } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } }, - "span": 43 + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 49 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hca02380bc74841bfE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 44, + "mutability": "Not" } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 + } + ] } }, "details": null @@ -2080,26 +2100,26 @@ } ], [ - 9, + 6, { "RigidTy": { - "Uint": "U8" + "Int": "Isize" } } ], [ - 6, + 16, { "RigidTy": { - "Int": "Isize" + "Int": "I32" } } ], [ - 16, + 9, { "RigidTy": { - "Int": "I32" + "Uint": "U8" } } ] diff --git a/kmir/src/tests/integration/data/exec-smir/references/mutableRef.state b/kmir/src/tests/integration/data/exec-smir/references/mutableRef.state index 0ad6465cc..62b92a680 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/mutableRef.state +++ b/kmir/src/tests/integration/data/exec-smir/references/mutableRef.state @@ -30,28 +30,28 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 22 , 8 , true ) , ty ( 2 ) , mutabilityMut ) ) - ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 28 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 22 , 8 , true ) , ty ( 2 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 28 ) , mutabilityMut ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 29 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 29 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 28 ) , mutabilityNot ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 29 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 29 ) , mutabilityMut ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "f" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 69 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b" " , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 15 ) ) ) ) ) ) , span: span ( 70 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 68 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 71 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 72 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 72 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 73 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 32 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 3 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x16" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 11 ) ) ) ) ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 60 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 22 , basicBlockIdx ( 4 ) ) .Branches , otherwise: basicBlockIdx ( 5 ) ) ) , span: span ( 56 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 12 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 13 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 62 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 12 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) .Operands , destination: place (... local: local ( 8 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 51 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 53 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 55 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 66 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 63 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "xref" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 25 ) |-> monoItemFn (... name: symbol ( "f" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 69 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b" " , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 15 ) ) ) ) ) ) , span: span ( 70 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 68 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 71 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 72 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 72 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 73 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 32 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 3 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x16" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 11 ) ) ) ) ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 60 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 22 , basicBlockIdx ( 4 ) ) .Branches , otherwise: basicBlockIdx ( 5 ) ) ) , span: span ( 56 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 12 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 13 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 61 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 62 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 12 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) .Operands , destination: place (... local: local ( 8 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 51 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 53 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 55 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 66 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 63 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "xref" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 67 ) ) .Bodies ) .Map @@ -65,4 +65,5 @@ ty ( 9 ) |-> rigidTyUint ( uintTyU8 ) ty ( 16 ) |-> rigidTyInt ( intTyI32 ) - \ No newline at end of file + + diff --git a/kmir/src/tests/integration/data/exec-smir/references/refAsArg.smir.json b/kmir/src/tests/integration/data/exec-smir/references/refAsArg.smir.json index 25e36621b..917211b8f 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/refAsArg.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/references/refAsArg.smir.json @@ -43,516 +43,223 @@ ], "functions": [ [ - 25, + 23, { - "NormalSym": "_ZN8refAsArg1f17h5a492bff7ee056a4E" + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hea1f574e8e1c5ce2E" } ], [ - 20, + 31, { - "IntrinsicSym": "black_box" + "NoOpSym": "" } ], [ - 0, + 26, { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" } ], [ - 19, + 20, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17ha7f47f8c8c89670eE" + "IntrinsicSym": "black_box" } ], [ - 23, + 13, { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hea1f574e8e1c5ce2E" + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h4ef4dd508588d0c3E" } ], [ - 13, + 19, { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h4ef4dd508588d0c3E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17ha7f47f8c8c89670eE" } ], [ - 34, + 25, { - "NoOpSym": "" + "NormalSym": "_ZN8refAsArg1f17h5a492bff7ee056a4E" } ], [ - 21, + 0, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hf4760b65b4a102d7E" + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" } ], [ - 14, + 21, { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha32a634bcd37a55dE" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hf4760b65b4a102d7E" } ], [ - 26, + 14, { - "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha32a634bcd37a55dE" } ] ], "uneval_consts": [], "items": [ { - "symbol_name": "_ZN3std2rt10lang_start17hb0648255f9b804cbE", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hf4760b65b4a102d7E", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ { - "Copy": { - "local": 1, - "projection": [] + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" } + }, + { + "local": 1, + "projection": [] } ] - ] - } - ] - }, - "span": 3 - }, - { + } + ] + }, + "span": 43 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 7, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, + "args": [ + { + "Move": { + "local": 3, "projection": [] } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, "projection": [] }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] + "target": 1, + "unwind": { + "Cleanup": 3 } - ] + } }, - "span": 2 + "span": 43 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 0, + "Drop": { + "place": { + "local": 1, "projection": [] }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] - } - ] - } - } - } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 + "target": 2, + "unwind": "Continue" + } }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 - } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] + "span": 43 } }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha32a634bcd37a55dE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 0, + "Drop": { + "place": { + "local": 1, "projection": [] }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 17, - "id": 8 - } - } - } - } - ] + "target": 4, + "unwind": "Terminate" + } }, - "span": 46 + "span": 43 } - ], - "terminator": { - "kind": "Return", - "span": 45 - } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 12, + "span": 43, + "mutability": "Not" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } + { + "ty": 1, + "span": 43, + "mutability": "Not" + }, + { + "ty": 24, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null @@ -563,303 +270,305 @@ "MonoItemFn": { "name": "main", "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 42 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 10 + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 52, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 42 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 10 + } } } } - } - ] + ] + }, + "span": 52 }, - "span": 52 - }, - { + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 53 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 25, + "id": 9 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 1, + "args": [ + { + "Copy": { + "local": 3, "projection": [] } - ] - } - ] + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 53 + "span": 51 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 9 - } - } - }, - "args": [ - { - "Copy": { - "local": 3, + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] } - } - ], - "destination": { - "local": 2, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 54 } - }, - "span": 51 - } - }, - { - "statements": [ - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 4, - "projection": [] + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } }, - { - "BinaryOp": [ - "Eq", - { - "Copy": { - "local": 2, - "projection": [] - } - }, - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 } - ] + } }, "span": 54 } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 4, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 0, - 3 - ] - ], - "otherwise": 2 - } - } - }, - "span": 54 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 55 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 56, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 26, - "id": 11 - } - } - }, - "args": [ - { + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 55 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 56, "user_ty": null, "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 24, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 0 + "kind": "ZeroSized", + "ty": 26, + "id": 11 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 27, - "id": 12 + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 27, + "id": 12 + } } } - } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 56 + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 56 + } } - } - ], - "locals": [ - { - "ty": 1, - "span": 57, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 58, - "mutability": "Not" - }, - { - "ty": 2, - "span": 59, - "mutability": "Not" - }, - { - "ty": 28, - "span": 53, - "mutability": "Not" - }, - { - "ty": 29, - "span": 54, - "mutability": "Mut" - }, - { - "ty": 30, - "span": 56, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 58, - "scope": 1 + ], + "locals": [ + { + "ty": 1, + "span": 57, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "ty": 2, + "span": 58, + "mutability": "Not" }, - "argument_index": null - }, - { - "name": "z", - "source_info": { + { + "ty": 2, "span": 59, - "scope": 2 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 28, + "span": 53, + "mutability": "Not" + }, + { + "ty": 29, + "span": 54, + "mutability": "Mut" }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 60 - } + { + "ty": 30, + "span": 56, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 58, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "z", + "source_info": { + "span": 59, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 60 + } + ] } }, "details": null @@ -870,955 +579,1266 @@ "MonoItemFn": { "name": ">::call_once", "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { + "local": 0, "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null }, { - "symbol_name": "_ZN8refAsArg1f17h5a492bff7ee056a4E", + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h466a9b165e00f7ddE", "mono_item_kind": { "MonoItemFn": { - "name": "f", - "id": 7, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref" - ] - } - } - } - ] - }, - "span": 62 + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 } - ], - "terminator": { - "kind": "Return", - "span": 61 } - } - ], - "locals": [ - { - "ty": 2, - "span": 63, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 64, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "y", - "source_info": { - "span": 64, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 65 - } + { + "ty": 22, + "span": 44, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hea1f574e8e1c5ce2E", + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha32a634bcd37a55dE", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 } - ] + } } } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 48, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } }, - "span": 15 + "argument_index": 1 } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } + ], + "spread_arg": null, + "span": 49 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start17hb0648255f9b804cbE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] + "span": 1 + }, + { + "kind": { + "StorageLive": 6 }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 + "span": 2 }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 + { + "kind": { + "StorageLive": 8 + }, + "span": 3 }, - "span": 22 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } } ] - } - ] - } - ] + ] + } + ] + }, + "span": 3 }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 2 }, - "span": 23 - }, - { + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 6, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } + } }, - { - "Use": { - "Copy": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] - } - ] + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] } } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, + ], + "destination": { + "local": 5, "projection": [] }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] - } - ] + "target": 1, + "unwind": "Continue" + } }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 5 }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 6 }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 + { + "kind": { + "StorageDead": 8 + }, + "span": 7 }, - "span": 27 + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 } - ], - "terminator": { - "kind": "Return", - "span": 20 } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, "span": 9, - "scope": 0 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } + { + "ty": 6, + "span": 10, + "mutability": "Not" }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 + { + "ty": 8, + "span": 11, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 + { + "ty": 11, + "span": 2, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN8refAsArg1f17h5a492bff7ee056a4E", + "mono_item_kind": { + "MonoItemFn": { + "name": "f", + "id": 7, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 62 + } + ], + "terminator": { + "kind": "Return", + "span": 61 } + } + ], + "locals": [ + { + "ty": 2, + "span": 63, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } + { + "ty": 28, + "span": 64, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "y", + "source_info": { + "span": 64, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 65 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h466a9b165e00f7ddE", + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h4ef4dd508588d0c3E", "mono_item_kind": { "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } + ], + "spread_arg": null, + "span": 42 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h4ef4dd508588d0c3E", + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hb11b6a9b578c8caaE", "mono_item_kind": { "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 43, "user_ty": null, "const_": { "kind": "ZeroSized", - "ty": 1, - "id": 4 + "ty": 21, + "id": 6 } } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] } } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 } }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } + { + "ty": 22, + "span": 43, + "mutability": "Not" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hf4760b65b4a102d7E", + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hea1f574e8e1c5ce2E", "mono_item_kind": { "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } + ], + "terminator": { "kind": { - "Assign": [ - { + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } + }, + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { "local": 3, "projection": [] }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, + "target": 1, + "unwind": "Continue" + } + }, + "span": 15 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } + }, + "args": [ + { + "Move": { + "local": 3, "projection": [] } - ] - } - ] + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } }, - "span": 43 + "span": 16 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] } - } + ] }, - "args": [ - { - "Move": { - "local": 3, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } } - }, - { - "Move": { - "local": 2, + ] + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 0, "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] } - } - ], - "destination": { - "local": 0, - "projection": [] + ] }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] + "span": 24 + }, + { + "kind": { + "StorageDead": 6 }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 }, - "target": 4, - "unwind": "Terminate" + "span": 27 } - }, - "span": 43 + ], + "terminator": { + "kind": "Return", + "span": 20 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, + "mutability": "Mut" } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hb11b6a9b578c8caaE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", { - "Move": { - "local": 2, - "projection": [] - } + "Field": [ + 0, + 7 + ] } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" + ] } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 3 + } + ] } }, "details": null @@ -1826,41 +1846,41 @@ ], "types": [ [ - 6, + 2, { "RigidTy": { - "Int": "Isize" + "Int": "I8" } } ], [ - 16, + 29, { - "RigidTy": { - "Int": "I32" - } + "RigidTy": "Bool" } ], [ - 9, + 16, { "RigidTy": { - "Uint": "U8" + "Int": "I32" } } ], [ - 2, + 6, { "RigidTy": { - "Int": "I8" + "Int": "Isize" } } ], [ - 29, + 9, { - "RigidTy": "Bool" + "RigidTy": { + "Uint": "U8" + } } ] ], diff --git a/kmir/src/tests/integration/data/exec-smir/references/refAsArg.state b/kmir/src/tests/integration/data/exec-smir/references/refAsArg.state index d1a910bb1..298d04c3e 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/refAsArg.state +++ b/kmir/src/tests/integration/data/exec-smir/references/refAsArg.state @@ -28,25 +28,25 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 28 ) , mutabilityNot ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 30 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 30 ) , mutabilityMut ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "f" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 62 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 61 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 2 ) , span: span ( 63 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 64 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 64 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 65 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 54 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 3 ) ) .Branches , otherwise: basicBlockIdx ( 2 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 55 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 53 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 56 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 25 ) |-> monoItemFn (... name: symbol ( "f" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 62 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 61 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 2 ) , span: span ( 63 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 64 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 64 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 65 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 54 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 3 ) ) .Branches , otherwise: basicBlockIdx ( 2 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 55 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 53 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 56 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/references/refAsArg2.smir.json b/kmir/src/tests/integration/data/exec-smir/references/refAsArg2.smir.json index d9dfaae97..b1465fb81 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/refAsArg2.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/references/refAsArg2.smir.json @@ -43,51 +43,51 @@ ], "functions": [ [ - 20, + 14, { - "IntrinsicSym": "black_box" + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha3e899695dde1a12E" } ], [ - 32, + 21, { - "NoOpSym": "" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h22e262686085d5cfE" } ], [ - 26, + 32, { - "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" + "NoOpSym": "" } ], [ - 21, + 0, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h22e262686085d5cfE" + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" } ], [ - 23, + 25, { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8448858603157be7E" + "NormalSym": "_ZN9refAsArg21f17h3824ba4b7ccb016dE" } ], [ - 25, + 23, { - "NormalSym": "_ZN9refAsArg21f17h3824ba4b7ccb016dE" + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8448858603157be7E" } ], [ - 14, + 20, { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha3e899695dde1a12E" + "IntrinsicSym": "black_box" } ], [ - 19, + 26, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h7adb6e7a526710c2E" + "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" } ], [ @@ -103,1421 +103,1478 @@ } ], [ - 0, + 19, { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h7adb6e7a526710c2E" } ] ], "uneval_consts": [], "items": [ { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha3e899695dde1a12E", + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hd928bd1477e89e88E", "mono_item_kind": { "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 0, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 17, - "id": 8 - } + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] } } - } - ] + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 46 + "span": 43 } - ], - "terminator": { - "kind": "Return", - "span": 45 - } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } + { + "ty": 22, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h7adb6e7a526710c2E", + "symbol_name": "_ZN9refAsArg21g17h9b15e23b800227b9E", "mono_item_kind": { "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] + "name": "g", + "id": 8, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] }, - "target": 1, - "unwind": "Continue" + "span": 68 } - }, - "span": 43 + ], + "terminator": { + "kind": "Return", + "span": 67 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "locals": [ + { + "ty": 2, + "span": 69, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 70, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 70, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 71 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hd928bd1477e89e88E", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h22e262686085d5cfE", "mono_item_kind": { "MonoItemFn": { "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] } - } - ], - "destination": { - "local": 0, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 43 } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h83e2448e9a19c29cE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { + ], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 43, "user_ty": null, "const_": { "kind": "ZeroSized", - "ty": 1, - "id": 4 + "ty": 23, + "id": 7 } } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] } } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + } + }, + "span": 43 } }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 43 + } }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 + } }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } + { + "ty": 12, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + }, + { + "ty": 24, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8448858603157be7E", + "symbol_name": "_ZN9refAsArg24main17hb3acdb099b5ffc5aE", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] + "name": "main", + "id": 6, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 52, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 42 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 10 } - ] + } } } - } - ] + ] + }, + "span": 52 }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, + { + "kind": { + "Assign": [ + { + "local": 3, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] } - } - ], - "destination": { - "local": 3, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 53 } - }, - "span": 15 - } - }, - { - "statements": [ - { + ], + "terminator": { "kind": { - "StorageDead": 4 + "Call": { + "func": { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 25, + "id": 9 + } + } + }, + "args": [ + { + "Copy": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 19 + "span": 51 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { - "local": 3, + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] } - } - ], - "destination": { - "local": 2, - "projection": [] + ] }, - "target": 2, - "unwind": "Continue" + "span": 54 } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 5, - "projection": [] + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] - } - ] + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 + } }, - "span": 23 - }, - { + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 55 + } + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 6, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 56, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 26, + "id": 11 + } + } }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } }, - { - "Field": [ - 0, - 9 - ] - } - ] + "ty": 27, + "id": 12 + } } } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, + ], + "destination": { + "local": 5, "projection": [] }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] - } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 + "target": null, + "unwind": "Continue" + } }, - "span": 27 + "span": 56 } - ], - "terminator": { - "kind": "Return", - "span": 20 } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 + ], + "locals": [ + { + "ty": 1, + "span": 57, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } + { + "ty": 2, + "span": 58, + "mutability": "Not" }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 + { + "ty": 2, + "span": 59, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 28, + "span": 53, + "mutability": "Not" }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 + { + "ty": 29, + "span": 54, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } + { + "ty": 30, + "span": 56, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 58, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } + { + "name": "z", + "source_info": { + "span": 59, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 60 + } + ] } }, "details": null }, { - "symbol_name": "_ZN9refAsArg21g17h9b15e23b800227b9E", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h7adb6e7a526710c2E", "mono_item_kind": { "MonoItemFn": { - "name": "g", - "id": 8, - "body": { - "blocks": [ - { - "statements": [ - { + "name": ">::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { "local": 0, "projection": [] }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref" - ] - } - } - } - ] + "target": 1, + "unwind": "Continue" + } }, - "span": 68 + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } - ], - "terminator": { - "kind": "Return", - "span": 67 } - } - ], - "locals": [ - { - "ty": 2, - "span": 69, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 70, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 70, - "scope": 0 + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + { + "ty": 7, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3f415fb1ec534b7eE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 } + } + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 71 - } + { + "ty": 22, + "span": 44, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h22e262686085d5cfE", + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h83e2448e9a19c29cE", "mono_item_kind": { "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { + "args": [ + { + "Move": { "local": 1, "projection": [] } - ] - } - ] + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 43 + "span": 33 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } } }, - { - "Move": { - "local": 2, - "projection": [] + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 + "argument_index": 1 } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 42 + } + ] } }, "details": null }, { - "symbol_name": "_ZN9refAsArg21f17h3824ba4b7ccb016dE", + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha3e899695dde1a12E", "mono_item_kind": { "MonoItemFn": { - "name": "f", - "id": 7, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 61, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 31, - "id": 13 - } - } - }, - "args": [ - { - "Copy": { - "local": 1, + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } + } + } } - } - ], - "destination": { - "local": 0, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 46 } - }, - "span": 62 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 63 - } - } - ], - "locals": [ - { - "ty": 2, - "span": 64, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 65, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 65, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + ], + "terminator": { + "kind": "Return", + "span": 45 } + } + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 66 - } + { + "ty": 1, + "span": 48, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 49 + } + ] } }, "details": null }, { - "symbol_name": "_ZN9refAsArg24main17hb3acdb099b5ffc5aE", + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8448858603157be7E", "mono_item_kind": { "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 42 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] } - }, - "ty": 2, - "id": 10 + ] } } } - } - ] - }, - "span": 52 - }, - { + ] + }, + "span": 17 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 1, + "args": [ + { + "Move": { + "local": 4, "projection": [] } - ] - } - ] + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 53 + "span": 15 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 9 - } - } - }, - "args": [ - { - "Copy": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 }, - "target": 1, - "unwind": "Continue" + "span": 19 } - }, - "span": 51 - } - }, - { - "statements": [ - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 4, + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, "projection": [] }, - { - "BinaryOp": [ - "Eq", - { - "Copy": { + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { "local": 2, - "projection": [] + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] } - }, - { + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { "Copy": { - "local": 1, - "projection": [] + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] } } - ] - } - ] + } + ] + }, + "span": 23 }, - "span": 54 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 4, - "projection": [] - } + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 24 + }, + { + "kind": { + "StorageDead": 6 }, - "targets": { - "branches": [ - [ + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ 0, - 3 + 7 ] - ], - "otherwise": 2 - } + } + ] } }, - "span": 54 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 55 + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 56, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 26, - "id": 11 - } - } - }, - "args": [ - { + ], + "spread_arg": null, + "span": 3 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN9refAsArg21f17h3824ba4b7ccb016dE", + "mono_item_kind": { + "MonoItemFn": { + "name": "f", + "id": 7, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 61, "user_ty": null, "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 24, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 0 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 27, - "id": 12 + "kind": "ZeroSized", + "ty": 31, + "id": 13 } } - } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 56 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 57, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 58, - "mutability": "Not" - }, - { - "ty": 2, - "span": 59, - "mutability": "Not" - }, - { - "ty": 28, - "span": 53, - "mutability": "Not" - }, - { - "ty": 29, - "span": 54, - "mutability": "Mut" - }, - { - "ty": 30, - "span": 56, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 58, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + }, + "args": [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 62 } }, - "argument_index": null - }, - { - "name": "z", - "source_info": { - "span": 59, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 63 } + } + ], + "locals": [ + { + "ty": 2, + "span": 64, + "mutability": "Mut" }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 60 - } + { + "ty": 28, + "span": 65, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 65, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 66 + } + ] } }, "details": null @@ -1528,391 +1585,356 @@ "MonoItemFn": { "name": "std::rt::lang_start::<()>", "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 + { + "kind": { + "StorageLive": 6 + }, + "span": 2 }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 + { + "kind": { + "StorageLive": 8 + }, + "span": 3 }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ { - "Copy": { - "local": 1, - "projection": [] + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } } - } + ] ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] + } + ] + }, + "span": 3 }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, "projection": [] } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 + ] } - } + ] }, - "args": [ - { - "Move": { + "span": 2 + }, + { + "kind": { + "Assign": [ + { "local": 6, "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] } - }, - { - "Move": { - "local": 2, - "projection": [] + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } } }, - { - "Move": { - "local": 3, - "projection": [] + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } } + ], + "destination": { + "local": 5, + "projection": [] }, - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 5, - "projection": [] + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 + "span": 5 }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] - } - ] + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } } } - } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 + ] + }, + "span": 6 }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 + { + "kind": { + "StorageDead": 8 + }, + "span": 7 }, - "span": 7 + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 } - ], - "terminator": { - "kind": "Return", - "span": 4 } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "ty": 7, + "span": 9, + "mutability": "Not" }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { + { + "ty": 6, "span": 10, - "scope": 0 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { + { + "ty": 8, "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } + "mutability": "Not" }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { + { + "ty": 9, "span": 12, - "scope": 0 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } + { + "ty": 10, + "span": 1, + "mutability": "Mut" }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 + { + "ty": 5, + "span": 2, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } + { + "ty": 11, + "span": 2, + "mutability": "Not" }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3f415fb1ec534b7eE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } + ], + "spread_arg": null, + "span": 13 + } + ] } }, "details": null @@ -1920,10 +1942,10 @@ ], "types": [ [ - 9, + 2, { "RigidTy": { - "Uint": "U8" + "Int": "I8" } } ], @@ -1950,10 +1972,10 @@ } ], [ - 2, + 9, { "RigidTy": { - "Int": "I8" + "Uint": "U8" } } ] diff --git a/kmir/src/tests/integration/data/exec-smir/references/refAsArg2.state b/kmir/src/tests/integration/data/exec-smir/references/refAsArg2.state index 3efc8ebed..8e72e0025 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/refAsArg2.state +++ b/kmir/src/tests/integration/data/exec-smir/references/refAsArg2.state @@ -28,26 +28,26 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 28 ) , mutabilityNot ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 30 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 30 ) , mutabilityMut ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "f" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 13 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 62 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 2 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 65 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 66 ) ) ) ) - ty ( 31 ) |-> monoItemFn (... name: symbol ( "g" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 68 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 67 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 2 ) , span: span ( 69 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 70 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 70 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 71 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 54 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 3 ) ) .Branches , otherwise: basicBlockIdx ( 2 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 55 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 53 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 56 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 25 ) |-> monoItemFn (... name: symbol ( "f" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 13 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 62 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 2 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 65 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 66 ) ) .Bodies ) + ty ( 31 ) |-> monoItemFn (... name: symbol ( "g" ) , id: defId ( 8 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 68 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 67 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 2 ) , span: span ( 69 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 70 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 70 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 71 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 54 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 3 ) ) .Branches , otherwise: basicBlockIdx ( 2 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 55 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 56 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 53 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 56 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/references/refReturned.smir.json b/kmir/src/tests/integration/data/exec-smir/references/refReturned.smir.json index 4e7ec8790..15fb2e973 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/refReturned.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/references/refReturned.smir.json @@ -42,12 +42,6 @@ ] ], "functions": [ - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17ha1267726f5f8f3ecE" - } - ], [ 25, { @@ -61,21 +55,27 @@ } ], [ - 20, + 0, { - "IntrinsicSym": "black_box" + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" } ], [ - 31, + 21, { - "NormalSym": "_ZN11refReturned1g17h1f19f83ec6e6cf29E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h846842672bb5af8aE" } ], [ - 0, + 26, { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" + } + ], + [ + 31, + { + "NormalSym": "_ZN11refReturned1g17h1f19f83ec6e6cf29E" } ], [ @@ -85,1082 +85,714 @@ } ], [ - 21, + 13, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h846842672bb5af8aE" + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17ha1267726f5f8f3ecE" } ], [ - 14, + 20, { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h345c503c41db42c8E" + "IntrinsicSym": "black_box" } ], [ - 32, + 14, { - "NoOpSym": "" + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h345c503c41db42c8E" } ], [ - 26, + 32, { - "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" + "NoOpSym": "" } ] ], "uneval_consts": [], "items": [ { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h210142d804738649E", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h846842672bb5af8aE", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { "local": 3, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] } - } - ], - "destination": { - "local": 2, - "projection": [] + ] }, - "target": 2, - "unwind": "Continue" + "span": 43 } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] + } }, - { - "Use": { - "Copy": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] - } - ] + "projection": [] } } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { + ], + "destination": { "local": 0, "projection": [] }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] + "target": 1, + "unwind": { + "Cleanup": 3 } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 + } }, - "span": 26 - }, - { + "span": 43 + } + }, + { + "statements": [], + "terminator": { "kind": { - "StorageDead": 2 + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } }, - "span": 27 + "span": 43 } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 + } }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 + { + "ty": 12, + "span": 43, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } + { + "ty": 1, + "span": 43, + "mutability": "Not" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } + { + "ty": 24, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17ha1267726f5f8f3ecE", + "symbol_name": "_ZN11refReturned4main17haf3da80612a1db31E", "mono_item_kind": { "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { + "name": "main", + "id": 6, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { "local": 1, "projection": [] - } - }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + }, + { + "Use": { + "Constant": { + "span": 52, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 42 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 10 + } + } } } - } - ], - "destination": { - "local": 0, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] } - } + ] }, - "args": [ - { + "span": 53 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 50, "user_ty": null, "const_": { "kind": "ZeroSized", - "ty": 1, - "id": 4 + "ty": 25, + "id": 9 } } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 + }, + "args": [ + { + "Copy": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 54 } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 54 } }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h345c503c41db42c8E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 + } + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 0, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 57, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 26, + "id": 11 + } + } }, - { - "Use": { + "args": [ + { "Constant": { - "span": 46, + "span": 32, "user_ty": null, "const_": { "kind": { "Allocated": { "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, 0 ], "provenance": { - "ptrs": [] + "ptrs": [ + [ + 0, + 0 + ] + ] }, - "align": 1, + "align": 8, "mutability": "Mut" } }, - "ty": 17, - "id": 8 + "ty": 27, + "id": 12 } } } - } - ] + ], + "destination": { + "local": 6, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } }, - "span": 46 + "span": 57 } - ], - "terminator": { - "kind": "Return", - "span": 45 } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 + ], + "locals": [ + { + "ty": 1, + "span": 58, + "mutability": "Mut" }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } + { + "ty": 2, + "span": 59, + "mutability": "Not" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN11refReturned1f17hec238a45891f1867E", - "mono_item_kind": { - "MonoItemFn": { - "name": "f", - "id": 7, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 63, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 31, - "id": 13 - } - } - }, - "args": [ - { - "Copy": { - "local": 1, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" + { + "ty": 28, + "span": 60, + "mutability": "Not" + }, + { + "ty": 28, + "span": 53, + "mutability": "Not" + }, + { + "ty": 2, + "span": 61, + "mutability": "Not" + }, + { + "ty": 29, + "span": 54, + "mutability": "Mut" + }, + { + "ty": 30, + "span": 57, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 59, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] } }, - "span": 64 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 65 - } - } - ], - "locals": [ - { - "ty": 28, - "span": 66, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 67, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 67, - "scope": 0 + "argument_index": null }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "name": "y", + "source_info": { + "span": 60, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": null }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 68 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h2966f97234df1366E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 + { + "name": "z", + "source_info": { + "span": 61, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": null } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } + ], + "spread_arg": null, + "span": 62 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h846842672bb5af8aE", + "symbol_name": "_ZN11refReturned1f17hec238a45891f1867E", "mono_item_kind": { "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { + "name": "f", + "id": 7, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 63, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 31, + "id": 13 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { + "args": [ + { + "Copy": { "local": 1, "projection": [] } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] } + ], + "destination": { + "local": 0, + "projection": [] }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 + "target": 1, + "unwind": "Continue" } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 + }, + "span": 64 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 65 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "locals": [ + { + "ty": 28, + "span": 66, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 67, + "mutability": "Not" } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 67, + "scope": 0 }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17haa13172991f024e8E", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] } }, - "span": 43 + "argument_index": 1 } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 68 + } + ] } }, "details": null }, { - "symbol_name": "_ZN11refReturned1g17h1f19f83ec6e6cf29E", + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h54c9713c41194453E", "mono_item_kind": { "MonoItemFn": { - "name": "g", - "id": 8, - "body": { - "blocks": [ - { - "statements": [ - { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 0, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } }, - { - "Use": { - "Copy": { + "args": [ + { + "Move": { "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, "projection": [] } } - } - ] + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 70 + "span": 43 } - ], - "terminator": { - "kind": "Return", - "span": 69 - } - } - ], - "locals": [ - { - "ty": 28, - "span": 71, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 72, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 72, - "scope": 0 }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 43, + "mutability": "Not" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 73 - } + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null @@ -1171,801 +803,1183 @@ "MonoItemFn": { "name": "std::rt::lang_start::<()>", "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 + { + "kind": { + "StorageLive": 6 + }, + "span": 2 }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 + { + "kind": { + "StorageLive": 8 + }, + "span": 3 }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } ] - }, - [ + ] + } + ] + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, { "Copy": { - "local": 1, + "local": 7, "projection": [] } - } + }, + 5 ] - ] - } - ] + } + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } + } + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 }, - "span": 3 + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 + } + } + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, + { + "ty": 8, + "span": 11, + "mutability": "Not" + }, + { + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 }, - { + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17ha1267726f5f8f3ecE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 7, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, + "args": [ + { + "Move": { + "local": 1, "projection": [] } - ] - } - ] + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 2 - }, - { + "span": 33 + } + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 6, + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, "projection": [] }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 42 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN11refReturned1g17h1f19f83ec6e6cf29E", + "mono_item_kind": { + "MonoItemFn": { + "name": "g", + "id": 8, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { "Copy": { - "local": 7, + "local": 1, "projection": [] } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 + } } - } + ] }, - "args": [ - { - "Move": { - "local": 6, + "span": 70 + } + ], + "terminator": { + "kind": "Return", + "span": 69 + } + } + ], + "locals": [ + { + "ty": 28, + "span": 71, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 72, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 72, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 73 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h2966f97234df1366E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 44, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h210142d804738649E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } } }, - { - "Move": { - "local": 2, - "projection": [] + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } } + ], + "destination": { + "local": 3, + "projection": [] }, - { - "Move": { - "local": 3, - "projection": [] + "target": 1, + "unwind": "Continue" + } + }, + "span": 15 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } } }, - { - "Move": { - "local": 4, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } } - } - ], - "destination": { - "local": 5, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 + "span": 23 }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] } - ] - } + }, + 16 + ] } - } - ] + ] + }, + "span": 24 }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 + { + "kind": { + "StorageDead": 5 + }, + "span": 26 }, - "span": 7 + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 } - ], - "terminator": { - "kind": "Return", - "span": 4 } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 11, + "span": 3, + "mutability": "Mut" }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 + { + "ty": 17, + "span": 16, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } + { + "ty": 1, + "span": 15, + "mutability": "Mut" }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 + { + "ty": 7, + "span": 17, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } + { + "ty": 18, + "span": 22, + "mutability": "Mut" }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + }, + "argument_index": null }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 3 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h54c9713c41194453E", + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h345c503c41db42c8E", "mono_item_kind": { "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } + } + } } - } - ], - "destination": { - "local": 0, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" + "span": 46 } - }, - "span": 43 + ], + "terminator": { + "kind": "Return", + "span": 45 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 48, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 49 + } + ] } }, "details": null }, { - "symbol_name": "_ZN11refReturned4main17haf3da80612a1db31E", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17haa13172991f024e8E", "mono_item_kind": { "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 42 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 10 - } - } - } - } - ] - }, - "span": 52 - }, - { + "name": ">::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 53 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 9 - } - } - }, - "args": [ - { - "Copy": { - "local": 3, + "Call": { + "func": { + "Move": { + "local": 1, "projection": [] } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 51 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - "Deref" - ] - } - } - } - ] - }, - "span": 55 - }, - { - "kind": { - "Assign": [ - { - "local": 5, + "args": [], + "destination": { + "local": 0, "projection": [] }, - { - "BinaryOp": [ - "Eq", - { - "Copy": { - "local": 4, - "projection": [] - } - }, - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - } - ] - }, - "span": 54 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 5, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 0, - 3 - ] - ], - "otherwise": 2 + "target": 1, + "unwind": "Continue" } - } - }, - "span": 54 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 56 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 57, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 26, - "id": 11 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 24, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 0 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 27, - "id": 12 - } - } - } - ], - "destination": { - "local": 6, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 57 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 58, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 59, - "mutability": "Not" - }, - { - "ty": 28, - "span": 60, - "mutability": "Not" - }, - { - "ty": 28, - "span": 53, - "mutability": "Not" - }, - { - "ty": 2, - "span": 61, - "mutability": "Not" - }, - { - "ty": 29, - "span": 54, - "mutability": "Mut" - }, - { - "ty": 30, - "span": 57, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 59, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + }, + "span": 43 } }, - "argument_index": null - }, - { - "name": "y", - "source_info": { - "span": 60, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } + } + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "z", - "source_info": { - "span": 61, - "scope": 3 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } + { + "ty": 7, + "span": 43, + "mutability": "Not" }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 62 - } + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null } ], "types": [ - [ - 6, - { - "RigidTy": { - "Int": "Isize" - } - } - ], [ 29, { @@ -1973,10 +1987,10 @@ } ], [ - 9, + 16, { "RigidTy": { - "Uint": "U8" + "Int": "I32" } } ], @@ -1989,10 +2003,18 @@ } ], [ - 16, + 9, { "RigidTy": { - "Int": "I32" + "Uint": "U8" + } + } + ], + [ + 6, + { + "RigidTy": { + "Int": "Isize" } } ] diff --git a/kmir/src/tests/integration/data/exec-smir/references/refReturned.state b/kmir/src/tests/integration/data/exec-smir/references/refReturned.state index 2eee4c407..8ffbb7679 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/refReturned.state +++ b/kmir/src/tests/integration/data/exec-smir/references/refReturned.state @@ -28,27 +28,27 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 28 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 28 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 30 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 30 ) , mutabilityMut ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "f" ) , id: defId ( 7 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 13 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 64 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 28 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 67 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 68 ) ) ) ) - ty ( 31 ) |-> monoItemFn (... name: symbol ( "g" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 70 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 69 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 28 ) , span: span ( 71 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 72 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 72 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 73 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 54 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 3 ) ) .Branches , otherwise: basicBlockIdx ( 2 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 56 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 6 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 57 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 58 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 60 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 53 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 57 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 60 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 61 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 62 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 25 ) |-> monoItemFn (... name: symbol ( "f" ) , id: defId ( 7 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 31 ) , id: mirConstId ( 13 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 64 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 65 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 28 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 67 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 68 ) ) .Bodies ) + ty ( 31 ) |-> monoItemFn (... name: symbol ( "g" ) , id: defId ( 8 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 70 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 69 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 28 ) , span: span ( 71 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 72 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 72 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 73 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 10 ) ) ) ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 53 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 54 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 3 ) ) .Branches , otherwise: basicBlockIdx ( 2 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 56 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands , destination: place (... local: local ( 6 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 57 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 58 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 60 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 53 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 54 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 57 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 60 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 61 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 62 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/references/simple.smir.json b/kmir/src/tests/integration/data/exec-smir/references/simple.smir.json index 8e9ce0e20..d0219c989 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/simple.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/references/simple.smir.json @@ -43,33 +43,33 @@ ], "functions": [ [ - 21, + 20, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h48f8e3454bc8caf9E" + "IntrinsicSym": "black_box" } ], [ - 25, + 19, { - "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h90e44d4a27e4eac4E" } ], [ - 23, + 21, { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he2c0086e06ec6623E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h48f8e3454bc8caf9E" } ], [ - 20, + 13, { - "IntrinsicSym": "black_box" + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h8d22806b1cabdad0E" } ], [ - 0, + 30, { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + "NoOpSym": "" } ], [ @@ -79,1665 +79,1683 @@ } ], [ - 30, + 0, { - "NoOpSym": "" + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" } ], [ - 19, + 25, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h90e44d4a27e4eac4E" + "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" } ], [ - 13, + 23, { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h8d22806b1cabdad0E" + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he2c0086e06ec6623E" } ] ], "uneval_consts": [], "items": [ { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h48f8e3454bc8caf9E", + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h0e8fcda8fbc4c3b7E", "mono_item_kind": { "MonoItemFn": { "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { + "args": [ + { + "Move": { "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, "projection": [] } - ] - } - ] + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, "span": 43 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 2, + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h88aed98570a5b1edE", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } + } + } } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] + ] }, - "target": 2, - "unwind": "Continue" + "span": 46 } - }, - "span": 43 + ], + "terminator": { + "kind": "Return", + "span": 45 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 48, + "mutability": "Not" } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 + "argument_index": 1 } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 49 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he2c0086e06ec6623E", + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h8d22806b1cabdad0E", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 4, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } }, - { - "Use": { - "Copy": { + "args": [ + { + "Move": { "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } } - } - ] + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 17 + "span": 33 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] } }, - "span": 15 + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { + ], + "spread_arg": null, + "span": 42 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h48f8e3454bc8caf9E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { "local": 3, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] } - } - ], - "destination": { - "local": 2, - "projection": [] + ] }, - "target": 2, - "unwind": "Continue" + "span": 43 } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { + ], + "terminator": { "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] - } - ] + "projection": [] } } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { + ], + "destination": { "local": 0, "projection": [] }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] + "target": 1, + "unwind": { + "Cleanup": 3 } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 + } }, - "span": 26 - }, - { + "span": 43 + } + }, + { + "statements": [], + "terminator": { "kind": { - "StorageDead": 2 + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } }, - "span": 27 + "span": 43 } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 + } }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 + { + "ty": 12, + "span": 43, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } + { + "ty": 1, + "span": 43, + "mutability": "Not" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } + { + "ty": 24, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h90e44d4a27e4eac4E", + "symbol_name": "_ZN6simple4main17hcc17a5a2c5cebe39E", "mono_item_kind": { "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } + "name": "main", + "id": 6, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 42 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 9 + } + } + } + } + ] }, - "args": [], - "destination": { - "local": 0, - "projection": [] + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 53 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] }, - "target": 1, - "unwind": "Continue" + "span": 50 } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h88aed98570a5b1edE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 0, - "projection": [] + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } }, - { - "Use": { + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 50 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 55, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 25, + "id": 10 + } + } + }, + "args": [ + { "Constant": { - "span": 46, + "span": 32, "user_ty": null, "const_": { "kind": { "Allocated": { "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, 0 ], "provenance": { - "ptrs": [] + "ptrs": [ + [ + 0, + 0 + ] + ] }, - "align": 1, + "align": 8, "mutability": "Mut" } }, - "ty": 17, - "id": 8 + "ty": 26, + "id": 11 } } } - } - ] + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } }, - "span": 46 + "span": 55 } - ], - "terminator": { - "kind": "Return", - "span": 45 } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 + ], + "locals": [ + { + "ty": 1, + "span": 56, + "mutability": "Mut" + }, + { + "ty": 2, + "span": 57, + "mutability": "Not" }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + { + "ty": 27, + "span": 58, + "mutability": "Not" + }, + { + "ty": 2, + "span": 59, + "mutability": "Not" + }, + { + "ty": 28, + "span": 50, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 55, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 57, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] } - } + }, + "argument_index": null }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8b592859fcbe523aE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 + { + "name": "y", + "source_info": { + "span": 58, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "z", + "source_info": { + "span": 59, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": null } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } + ], + "spread_arg": null, + "span": 60 + } + ] } }, "details": null }, { - "symbol_name": "_ZN6simple4main17hcc17a5a2c5cebe39E", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h90e44d4a27e4eac4E", "mono_item_kind": { "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { + "name": ">::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 42 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 9 - } - } + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] } - } - ] - }, - "span": 51 - }, - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 52 - }, - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - "Deref" - ] - } - } - } - ] - }, - "span": 53 - }, - { - "kind": { - "Assign": [ - { - "local": 4, + "args": [], + "destination": { + "local": 0, "projection": [] }, - { - "BinaryOp": [ - "Eq", - { - "Copy": { - "local": 3, - "projection": [] - } - }, - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - } - ] - }, - "span": 50 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 4, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 0, - 2 - ] - ], - "otherwise": 1 + "target": 1, + "unwind": "Continue" } - } - }, - "span": 50 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 54 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 55, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 10 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 24, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 0 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 26, - "id": 11 - } - } - } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 55 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 56, - "mutability": "Mut" - }, - { - "ty": 2, - "span": 57, - "mutability": "Not" - }, - { - "ty": 27, - "span": 58, - "mutability": "Not" - }, - { - "ty": 2, - "span": 59, - "mutability": "Not" - }, - { - "ty": 28, - "span": 50, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 55, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "x", - "source_info": { - "span": 57, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] + }, + "span": 43 } }, - "argument_index": null - }, - { - "name": "y", - "source_info": { - "span": 58, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } + } + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "z", - "source_info": { - "span": 59, - "scope": 3 + { + "ty": 7, + "span": 43, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 60 - } + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std2rt10lang_start17hc7c2da63cbb13d2eE", + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he2c0086e06ec6623E", "mono_item_kind": { "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 + { + "kind": { + "StorageLive": 3 + }, + "span": 15 }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 + { + "kind": { + "StorageLive": 4 + }, + "span": 17 }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", { - "Type": 4 + "Field": [ + 0, + 7 + ] } ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] - } } - ] - ] - } - ] - }, - "span": 3 - }, - { + } + } + ] + }, + "span": 17 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 7, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, + "args": [ + { + "Move": { + "local": 4, "projection": [] } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, + } + ], + "destination": { + "local": 3, "projection": [] }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] + "target": 1, + "unwind": "Continue" + } }, - "span": 2 + "span": 15 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } } }, - { - "Move": { - "local": 2, - "projection": [] + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } } + ], + "destination": { + "local": 2, + "projection": [] }, - { - "Move": { - "local": 3, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] } - }, - { - "Move": { - "local": 4, + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } } - } - ], - "destination": { - "local": 5, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 + "span": 23 }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] } - ] - } + }, + 16 + ] } - } - ] + ] + }, + "span": 24 }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 + { + "kind": { + "StorageDead": 5 + }, + "span": 26 }, - "span": 7 + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 } - ], - "terminator": { - "kind": "Return", - "span": 4 } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 11, + "span": 3, + "mutability": "Mut" }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 + { + "ty": 17, + "span": 16, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } + { + "ty": 1, + "span": 15, + "mutability": "Mut" }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 + { + "ty": 7, + "span": 17, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } + { + "ty": 18, + "span": 22, + "mutability": "Mut" }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + }, + "argument_index": null }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 3 + } + ] } }, "details": null }, { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h8d22806b1cabdad0E", + "symbol_name": "_ZN3std2rt10lang_start17hc7c2da63cbb13d2eE", "mono_item_kind": { "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] } - } + ] }, - "args": [ - { - "Move": { - "local": 1, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] } - }, - { + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 0, "user_ty": null, "const_": { "kind": "ZeroSized", - "ty": 1, - "id": 4 + "ty": 0, + "id": 0 } } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } } - } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } } } - } - ], - "destination": { - "local": 2, - "projection": [] + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 5 }, - "target": 2, - "unwind": "Unreachable" + "span": 7 } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 + ], + "terminator": { + "kind": "Return", + "span": 4 + } } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 + { + "ty": 8, + "span": 11, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } + { + "ty": 9, + "span": 12, + "mutability": "Not" }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 + { + "ty": 10, + "span": 1, + "mutability": "Mut" }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] } - } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h0e8fcda8fbc4c3b7E", + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8b592859fcbe523aE", "mono_item_kind": { "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 44, + "mutability": "Not" } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 + } + ] } }, "details": null @@ -1745,10 +1763,10 @@ ], "types": [ [ - 2, + 16, { "RigidTy": { - "Int": "I8" + "Int": "I32" } } ], @@ -1775,10 +1793,10 @@ } ], [ - 16, + 2, { "RigidTy": { - "Int": "I32" + "Int": "I8" } } ] diff --git a/kmir/src/tests/integration/data/exec-smir/references/simple.state b/kmir/src/tests/integration/data/exec-smir/references/simple.state index 760bb9fc5..8fcbeaeb2 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/simple.state +++ b/kmir/src/tests/integration/data/exec-smir/references/simple.state @@ -27,24 +27,24 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 27 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityNot ) , ty ( 27 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 42 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 29 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 29 ) , mutabilityMut ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 51 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 53 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 50 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 50 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 10 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 55 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 56 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 57 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 55 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 57 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 9 ) ) ) ) ) ) , span: span ( 51 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 52 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) ) , span: span ( 53 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 50 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 50 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 10 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) .Operands , destination: place (... local: local ( 5 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 55 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 56 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 2 ) , span: span ( 57 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 55 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 57 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "y" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "z" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 60 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/references/weirdRefs.smir.json b/kmir/src/tests/integration/data/exec-smir/references/weirdRefs.smir.json index f19b57050..742906ea4 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/weirdRefs.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/references/weirdRefs.smir.json @@ -3,7 +3,7 @@ "crate_id": 16077360951361859512, "allocs": [ [ - 8, + 9, { "Memory": { "bytes": [ @@ -28,12 +28,18 @@ 97, 46, 97, - 110, - 111, + 95, 116, 104, - 101, - 114 + 105, + 114, + 100, + 32, + 61, + 61, + 32, + 52, + 51 ], "provenance": { "ptrs": [] @@ -84,7 +90,7 @@ } ], [ - 5, + 6, { "Memory": { "bytes": [ @@ -120,7 +126,7 @@ 61, 32, 52, - 50 + 51 ], "provenance": { "ptrs": [] @@ -131,7 +137,7 @@ } ], [ - 9, + 5, { "Memory": { "bytes": [ @@ -157,17 +163,17 @@ 46, 97, 95, - 116, - 104, - 105, - 114, - 100, + 118, + 97, + 108, + 117, + 101, 32, 61, 61, 32, 52, - 51 + 50 ], "provenance": { "ptrs": [] @@ -178,7 +184,7 @@ } ], [ - 6, + 8, { "Memory": { "bytes": [ @@ -203,18 +209,12 @@ 97, 46, 97, - 95, - 118, - 97, - 108, - 117, + 110, + 111, + 116, + 104, 101, - 32, - 61, - 61, - 32, - 52, - 51 + 114 ], "provenance": { "ptrs": [] @@ -227,9 +227,9 @@ ], "functions": [ [ - 0, + 21, { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h7b723e01cb78ea2dE" } ], [ @@ -239,140 +239,229 @@ } ], [ - 20, + 23, { - "IntrinsicSym": "black_box" + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hfef9e5a4b8fedb26E" } ], [ - 14, + 27, { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h7c13163714402654E" + "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" } ], [ - 23, + 44, { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hfef9e5a4b8fedb26E" + "NoOpSym": "" } ], [ - 44, + 19, { - "NoOpSym": "" + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17ha84526f71506a832E" } ], [ - 21, + 0, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h7b723e01cb78ea2dE" + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" } ], [ - 27, + 14, { - "NormalSym": "_ZN4core9panicking5panic17h941160ead03e2d54E" + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h7c13163714402654E" } ], [ - 19, + 20, { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17ha84526f71506a832E" + "IntrinsicSym": "black_box" } ] ], "uneval_consts": [], "items": [ { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h7c13163714402654E", + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hc2ea78c58d6db9c2E", "mono_item_kind": { "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { "local": 0, "projection": [] }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 17, - "id": 8 + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h7c13163714402654E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } } } } - } - ] - }, - "span": 46 + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 } - ], - "terminator": { - "kind": "Return", - "span": 45 } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 1, "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 49 + } + ] } }, "details": null @@ -383,1494 +472,1496 @@ "MonoItemFn": { "name": "main", "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Aggregate": [ - { - "Adt": [ - 7, - 0, - [], - null, - null - ] - }, - [ + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 32 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 2, - "id": 9 + "Adt": [ + 7, + 0, + [], + null, + null + ] + }, + [ + { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 32 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 9 + } + } + }, + { + "Constant": { + "span": 52, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 25, + "id": 10 + } + } + }, + { + "Constant": { + "span": 53, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 26, + "id": 11 + } } } + ] + ] + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" }, { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 25, - "id": 10 - } + "Mut": { + "kind": "Default" } }, { - "Constant": { - "span": 53, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 32, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 26, - "id": 11 + "local": 1, + "projection": [ + { + "Field": [ + 0, + 2 + ] } - } + ] } ] - ] - } - ] + } + ] + }, + "span": 55 }, - "span": 54 - }, - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [ - { - "Field": [ - 0, - 2 - ] + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [ + "Deref" + ] + }, + { + "Use": { + "Constant": { + "span": 56, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 42 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 12 } - ] + } } - ] - } - ] + } + ] + }, + "span": 57 }, - "span": 55 - }, - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [ - "Deref" - ] - }, - { - "Use": { - "Constant": { - "span": 56, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 42 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 2 + ] } - }, - "ty": 2, - "id": 12 + ] } } } - } - ] - }, - "span": 57 - }, - { + ] + }, + "span": 58 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - { - "Field": [ - 0, - 2 - ] - } - ] - } + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] } + }, + "targets": { + "branches": [ + [ + 42, + 1 + ] + ], + "otherwise": 2 } - ] + } }, - "span": 58 + "span": 50 } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 3, - "projection": [] - } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 2 + ] + } + ] + } + ] + } + ] }, - "targets": { - "branches": [ - [ - 42, - 1 - ] - ], - "otherwise": 2 - } - } - }, - "span": 50 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" + "span": 60 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 5, + "projection": [] } - }, - { - "local": 1, + ] + } + ] + }, + "span": 61 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "CopyForDeref": { + "local": 6, "projection": [ - { - "Field": [ - 0, - 2 - ] - } + "Deref" ] } - ] - } - ] + } + ] + }, + "span": 62 }, - "span": 60 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [ + "Deref" + ] + }, + { + "Use": { + "Constant": { + "span": 63, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 43 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 2, + "id": 13 + } } - }, - { - "local": 5, - "projection": [] } - ] - } - ] + } + ] + }, + "span": 62 }, - "span": 61 - }, - { + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 2 + ] + } + ] + } + } + } + ] + }, + "span": 64 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 20, - "projection": [] + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } }, - { - "CopyForDeref": { - "local": 6, - "projection": [ - "Deref" + "targets": { + "branches": [ + [ + 43, + 3 ] - } + ], + "otherwise": 4 } - ] + } }, - "span": 62 - }, - { + "span": 59 + } + }, + { + "statements": [], + "terminator": { "kind": { - "Assign": [ - { - "local": 20, - "projection": [ - "Deref" - ] + "Call": { + "func": { + "Constant": { + "span": 65, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 27, + "id": 14 + } + } }, - { - "Use": { + "args": [ + { "Constant": { - "span": 63, + "span": 32, "user_ty": null, "const_": { "kind": { "Allocated": { "bytes": [ - 43 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 33, + 0, + 0, + 0, + 0, + 0, + 0, + 0 ], "provenance": { - "ptrs": [] + "ptrs": [ + [ + 0, + 0 + ] + ] }, - "align": 1, + "align": 8, "mutability": "Mut" } }, - "ty": 2, - "id": 13 + "ty": 28, + "id": 15 } } } - } - ] - }, - "span": 62 - }, - { - "kind": { - "Assign": [ - { - "local": 7, + ], + "destination": { + "local": 4, "projection": [] }, - { - "Use": { - "Copy": { - "local": 1, + "target": null, + "unwind": "Continue" + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 8, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 10, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 9, + "projection": [] + } + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "CopyForDeref": { + "local": 11, "projection": [ + "Deref", { "Field": [ 0, - 2 + 29 ] } ] } } - } - ] + ] + }, + "span": 70 }, - "span": 64 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 7, - "projection": [] - } + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 21, + "projection": [ + "Deref", + { + "Field": [ + 0, + 2 + ] + } + ] + } + } + } + ] }, - "targets": { - "branches": [ - [ - 43, - 3 - ] - ], - "otherwise": 4 - } + "span": 70 } - }, - "span": 59 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 65, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 14 + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 12, + "projection": [] } + }, + "targets": { + "branches": [ + [ + 43, + 5 + ] + ], + "otherwise": 6 } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 33, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 0 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 28, - "id": 15 - } - } - } - ], - "destination": { - "local": 4, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 65 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 10, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 67 - }, - { - "kind": { - "Assign": [ - { - "local": 9, - "projection": [] - }, - { - "Aggregate": [ - { - "Adt": [ - 8, - 0, - [ - { - "Lifetime": { - "kind": "ReErased" - } - } - ], - null, - null - ] - }, - [ - { - "Copy": { - "local": 10, - "projection": [] - } - } - ] - ] - } - ] - }, - "span": 68 - }, - { - "kind": { - "Assign": [ - { - "local": 11, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 9, - "projection": [] - } - ] - } - ] - }, - "span": 69 - }, - { - "kind": { - "Assign": [ - { - "local": 21, - "projection": [] - }, - { - "CopyForDeref": { - "local": 11, - "projection": [ - "Deref", - { - "Field": [ - 0, - 29 - ] - } - ] - } - } - ] - }, - "span": 70 - }, - { - "kind": { - "Assign": [ - { - "local": 12, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 21, - "projection": [ - "Deref", - { - "Field": [ - 0, - 2 - ] - } - ] - } - } - } - ] + } }, - "span": 70 + "span": 66 } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Copy": { - "local": 12, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 43, - 5 - ] - ], - "otherwise": 6 - } - } - }, - "span": 66 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 71, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 14 - } - } - }, - "args": [ - { + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 71, "user_ty": null, "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 33, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 1 - ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 28, - "id": 16 + "kind": "ZeroSized", + "ty": 27, + "id": 14 } } - } - ], - "destination": { - "local": 8, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 71 - } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 22, - "projection": [] - }, - { - "CopyForDeref": { - "local": 11, - "projection": [ - "Deref", - { - "Field": [ - 0, - 29 - ] - } - ] - } - } - ] - }, - "span": 73 - }, - { - "kind": { - "Assign": [ - { - "local": 22, - "projection": [ - "Deref", - { - "Field": [ - 1, - 25 - ] - } - ] }, - { - "Use": { + "args": [ + { "Constant": { - "span": 74, + "span": 32, "user_ty": null, "const_": { "kind": { "Allocated": { "bytes": [ - 1 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 33, + 0, + 0, + 0, + 0, + 0, + 0, + 0 ], "provenance": { - "ptrs": [] + "ptrs": [ + [ + 0, + 1 + ] + ] }, - "align": 1, + "align": 8, "mutability": "Mut" } }, - "ty": 25, - "id": 17 + "ty": 28, + "id": 16 } } } - } - ] - }, - "span": 73 - }, - { - "kind": { - "Assign": [ - { - "local": 23, + ], + "destination": { + "local": 8, "projection": [] }, - { - "CopyForDeref": { - "local": 11, - "projection": [ - "Deref", - { - "Field": [ - 0, - 29 - ] - } - ] - } - } - ] + "target": null, + "unwind": "Continue" + } }, - "span": 75 - }, - { - "kind": { - "Assign": [ - { - "local": 14, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 23, + "span": 71 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "CopyForDeref": { + "local": 11, "projection": [ "Deref", { "Field": [ - 2, - 26 + 0, + 29 ] } ] } - ] - } - ] + } + ] + }, + "span": 73 }, - "span": 75 - }, - { - "kind": { - "Assign": [ - { - "local": 24, - "projection": [] - }, - { - "CopyForDeref": { - "local": 11, + { + "kind": { + "Assign": [ + { + "local": 22, "projection": [ "Deref", { "Field": [ - 0, - 29 + 1, + 25 ] } ] + }, + { + "Use": { + "Constant": { + "span": 74, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 1 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 25, + "id": 17 + } + } + } } - } - ] + ] + }, + "span": 73 }, - "span": 76 - }, - { - "kind": { - "Assign": [ - { - "local": 15, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 24, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "CopyForDeref": { + "local": 11, "projection": [ "Deref", { "Field": [ 0, - 2 + 29 ] } ] } } - } - ] + ] + }, + "span": 75 }, - "span": 76 - }, - { - "kind": { - "Assign": [ - { - "local": 14, - "projection": [ - "Deref" - ] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 15, - "projection": [] + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 23, + "projection": [ + "Deref", + { + "Field": [ + 2, + 26 + ] + } + ] } - }, - 26 - ] - } - ] + ] + } + ] + }, + "span": 75 }, - "span": 77 - }, - { - "kind": { - "Assign": [ - { - "local": 16, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "CopyForDeref": { + "local": 11, "projection": [ + "Deref", { "Field": [ - 1, - 25 + 0, + 29 ] } ] } } - } - ] - }, - "span": 72 - } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 16, - "projection": [] - } + ] }, - "targets": { - "branches": [ - [ - 0, - 8 - ] - ], - "otherwise": 7 - } - } - }, - "span": 72 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 78, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 14 + "span": 76 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 24, + "projection": [ + "Deref", + { + "Field": [ + 0, + 2 + ] + } + ] + } + } } - } + ] }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 26, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 2 - ] - ] - }, - "align": 8, - "mutability": "Mut" + "span": 76 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [ + "Deref" + ] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 15, + "projection": [] } }, - "ty": 28, - "id": 18 + 26 + ] + } + ] + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } } } - } - ], - "destination": { - "local": 13, - "projection": [] + ] }, - "target": null, - "unwind": "Continue" + "span": 72 } - }, - "span": 78 - } - }, - { - "statements": [ - { + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 18, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - { - "Field": [ - 2, - 26 - ] - } - ] - } + "SwitchInt": { + "discr": { + "Move": { + "local": 16, + "projection": [] } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ] + ], + "otherwise": 7 } - ] + } }, - "span": 80 + "span": 72 } - ], - "terminator": { - "kind": { - "SwitchInt": { - "discr": { - "Move": { - "local": 18, - "projection": [] - } - }, - "targets": { - "branches": [ - [ - 43, - 9 - ] - ], - "otherwise": 10 - } - } - }, - "span": 79 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 81, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 14 - } - } - }, - "args": [ - { + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 78, "user_ty": null, "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 27, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 3 + "kind": "ZeroSized", + "ty": 27, + "id": 14 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 28, + "id": 18 + } + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 78 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 2, + 26 ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 28, - "id": 19 + } + ] + } } } - } - ], - "destination": { - "local": 17, - "projection": [] + ] }, - "target": null, - "unwind": "Continue" + "span": 80 } - }, - "span": 81 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 82 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 83, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 27, - "id": 14 + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 18, + "projection": [] } + }, + "targets": { + "branches": [ + [ + 43, + 9 + ] + ], + "otherwise": 10 } - }, - "args": [ - { + } + }, + "span": 79 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 81, "user_ty": null, "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 33, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [ - [ - 0, - 4 + "kind": "ZeroSized", + "ty": 27, + "id": 14 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 28, + "id": 19 + } + } + } + ], + "destination": { + "local": 17, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 81 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 82 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 83, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 27, + "id": 14 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 33, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] ] - ] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 28, - "id": 20 + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 28, + "id": 20 + } } } - } - ], - "destination": { - "local": 19, - "projection": [] - }, - "target": null, - "unwind": "Continue" - } - }, - "span": 83 + ], + "destination": { + "local": 19, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 83 + } } - } - ], - "locals": [ - { - "ty": 1, - "span": 84, - "mutability": "Mut" - }, - { - "ty": 30, - "span": 85, - "mutability": "Mut" - }, - { - "ty": 31, - "span": 86, - "mutability": "Not" - }, - { - "ty": 2, - "span": 58, - "mutability": "Mut" - }, - { - "ty": 32, - "span": 65, - "mutability": "Mut" - }, - { - "ty": 31, - "span": 87, - "mutability": "Mut" - }, - { - "ty": 33, - "span": 88, - "mutability": "Not" - }, - { - "ty": 2, - "span": 64, - "mutability": "Mut" - }, - { - "ty": 32, - "span": 71, - "mutability": "Mut" - }, - { - "ty": 34, - "span": 89, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 67, - "mutability": "Mut" - }, - { - "ty": 35, - "span": 90, - "mutability": "Not" - }, - { - "ty": 2, - "span": 91, - "mutability": "Not" - }, - { - "ty": 32, - "span": 78, - "mutability": "Mut" - }, - { - "ty": 36, - "span": 92, - "mutability": "Not" - }, - { - "ty": 2, - "span": 76, - "mutability": "Mut" - }, - { - "ty": 25, - "span": 72, - "mutability": "Mut" - }, - { - "ty": 32, - "span": 81, - "mutability": "Mut" - }, - { - "ty": 26, - "span": 80, - "mutability": "Mut" - }, - { - "ty": 32, - "span": 83, - "mutability": "Mut" - }, - { - "ty": 31, - "span": 88, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 90, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 90, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 90, - "mutability": "Mut" - }, - { - "ty": 29, - "span": 90, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "a", - "source_info": { - "span": 85, - "scope": 1 + ], + "locals": [ + { + "ty": 1, + "span": 84, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "ty": 30, + "span": 85, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "r1", - "source_info": { + { + "ty": 31, "span": 86, - "scope": 2 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 2, + "span": 58, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "r1", - "source_info": { - "span": 87, - "scope": 3 + { + "ty": 32, + "span": 65, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } + { + "ty": 31, + "span": 87, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "r2", - "source_info": { + { + "ty": 33, "span": 88, - "scope": 4 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 6, - "projection": [] - } + { + "ty": 2, + "span": 64, + "mutability": "Mut" + }, + { + "ty": 32, + "span": 71, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "e", - "source_info": { + { + "ty": 34, "span": 89, - "scope": 5 + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 9, - "projection": [] - } + { + "ty": 29, + "span": 67, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "ee", - "source_info": { + { + "ty": 35, "span": 90, - "scope": 6 - }, - "composite": null, - "value": { - "Place": { - "local": 11, - "projection": [] - } + "mutability": "Not" }, - "argument_index": null - }, - { - "name": "vv", - "source_info": { + { + "ty": 2, "span": 91, - "scope": 7 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 12, - "projection": [] - } + { + "ty": 32, + "span": 78, + "mutability": "Mut" }, - "argument_index": null - }, - { - "name": "r3", - "source_info": { + { + "ty": 36, "span": 92, - "scope": 8 + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 14, - "projection": [] - } + { + "ty": 2, + "span": 76, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 72, + "mutability": "Mut" + }, + { + "ty": 32, + "span": 81, + "mutability": "Mut" + }, + { + "ty": 26, + "span": 80, + "mutability": "Mut" + }, + { + "ty": 32, + "span": 83, + "mutability": "Mut" + }, + { + "ty": 31, + "span": 88, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 90, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 90, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 90, + "mutability": "Mut" + }, + { + "ty": 29, + "span": 90, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "a", + "source_info": { + "span": 85, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "r1", + "source_info": { + "span": 86, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "r1", + "source_info": { + "span": 87, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "r2", + "source_info": { + "span": 88, + "scope": 4 + }, + "composite": null, + "value": { + "Place": { + "local": 6, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "e", + "source_info": { + "span": 89, + "scope": 5 + }, + "composite": null, + "value": { + "Place": { + "local": 9, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "ee", + "source_info": { + "span": 90, + "scope": 6 + }, + "composite": null, + "value": { + "Place": { + "local": 11, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "vv", + "source_info": { + "span": 91, + "scope": 7 + }, + "composite": null, + "value": { + "Place": { + "local": 12, + "projection": [] + } + }, + "argument_index": null }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 93 - } + { + "name": "r3", + "source_info": { + "span": 92, + "scope": 8 + }, + "composite": null, + "value": { + "Place": { + "local": 14, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 93 + } + ] } }, "details": null @@ -1881,419 +1972,356 @@ "MonoItemFn": { "name": "std::rt::lang_start::<()>", "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 + { + "kind": { + "StorageLive": 6 + }, + "span": 2 }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 + { + "kind": { + "StorageLive": 8 + }, + "span": 3 }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ { - "Copy": { - "local": 1, - "projection": [] + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } } - } + ] ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] + } + ] + }, + "span": 3 }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, "projection": [] } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 + ] } - } + ] }, - "args": [ - { - "Move": { + "span": 2 + }, + { + "kind": { + "Assign": [ + { "local": 6, "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] } - }, - { - "Move": { - "local": 2, - "projection": [] + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } } }, - { - "Move": { - "local": 3, - "projection": [] + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } } + ], + "destination": { + "local": 5, + "projection": [] }, - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 5, - "projection": [] + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 + "span": 5 }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] - } - ] + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } } } - } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 + ] + }, + "span": 6 }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 + { + "kind": { + "StorageDead": 8 + }, + "span": 7 }, - "span": 7 + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 } - ], - "terminator": { - "kind": "Return", - "span": 4 } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, "span": 9, - "scope": 0 + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, + { + "ty": 8, + "span": 11, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } + { + "ty": 9, + "span": 12, + "mutability": "Not" }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 + { + "ty": 10, + "span": 1, + "mutability": "Mut" }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } + { + "ty": 5, + "span": 2, + "mutability": "Mut" }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 + { + "ty": 11, + "span": 2, + "mutability": "Not" }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17ha84526f71506a832E", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + "argument_index": null } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 13 + } + ] } }, "details": null @@ -2304,357 +2332,518 @@ "MonoItemFn": { "name": "std::rt::lang_start::<()>::{closure#0}", "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 + { + "kind": { + "StorageLive": 3 + }, + "span": 15 }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 + { + "kind": { + "StorageLive": 4 + }, + "span": 17 }, - "span": 17 - }, - { + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } + ], + "terminator": { "kind": { - "Assign": [ - { - "local": 4, - "projection": [] + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] + "args": [ + { + "Move": { + "local": 4, + "projection": [] } } - } - ] + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } }, - "span": 17 + "span": 15 } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } } - } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 }, - "args": [ - { - "Move": { - "local": 4, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] } - } - ], - "destination": { - "local": 3, - "projection": [] + ] }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 + "span": 22 }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } } - } + ] }, - "args": [ - { - "Move": { - "local": 3, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 0, "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] } - } - ], - "destination": { - "local": 2, - "projection": [] + ] }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 + "span": 24 }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 + { + "kind": { + "StorageDead": 6 + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 }, - "span": 22 + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] - } + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 ] } ] - }, - "span": 22 + } }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 3 + } + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h7b723e01cb78ea2dE", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" } - ] + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 } } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { "local": 0, "projection": [] }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] + "target": 1, + "unwind": { + "Cleanup": 3 } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 + } }, - "span": 26 - }, - { + "span": 43 + } + }, + { + "statements": [], + "terminator": { "kind": { - "StorageDead": 2 + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } }, - "span": 27 + "span": 43 } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 } }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 } }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } + { + "ty": 12, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + }, + { + "ty": 24, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null @@ -2665,454 +2854,283 @@ "MonoItemFn": { "name": "std::sys::backtrace::__rust_begin_short_backtrace::", "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 31, "user_ty": null, "const_": { "kind": "ZeroSized", - "ty": 1, - "id": 4 + "ty": 19, + "id": 3 } } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } } - } - }, - "args": [ - { + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { "Constant": { - "span": 32, + "span": 34, "user_ty": null, "const_": { "kind": "ZeroSized", - "ty": 1, - "id": 4 + "ty": 20, + "id": 5 } } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h7b723e01cb78ea2dE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 } - }, - { - "local": 1, - "projection": [] } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] } + ], + "destination": { + "local": 2, + "projection": [] }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 + "target": 2, + "unwind": "Unreachable" } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] } }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } } }, - "span": 43 + "argument_index": 1 } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "spread_arg": null, + "span": 42 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hc2ea78c58d6db9c2E", + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h65a2c197bce21f15E", "mono_item_kind": { "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 44, + "mutability": "Not" } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 + } + ] } }, "details": null }, { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h65a2c197bce21f15E", + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17ha84526f71506a832E", "mono_item_kind": { "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 + "name": ">::call_once", + "id": 3, + "body": [ + { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 + } + ] } }, "details": null @@ -3120,56 +3138,56 @@ ], "types": [ [ - 41, + 16, { "RigidTy": { - "Uint": "U32" + "Int": "I32" } } ], [ - 25, + 6, { - "RigidTy": "Bool" + "RigidTy": { + "Int": "Isize" + } } ], [ - 9, + 2, { "RigidTy": { - "Uint": "U8" + "Int": "I8" } } ], [ - 26, + 9, { "RigidTy": { - "Uint": "Usize" + "Uint": "U8" } } ], [ - 6, + 26, { "RigidTy": { - "Int": "Isize" + "Uint": "Usize" } } ], [ - 2, + 25, { - "RigidTy": { - "Int": "I8" - } + "RigidTy": "Bool" } ], [ - 16, + 41, { "RigidTy": { - "Int": "I32" + "Uint": "U32" } } ] diff --git a/kmir/src/tests/integration/data/exec-smir/references/weirdRefs.state b/kmir/src/tests/integration/data/exec-smir/references/weirdRefs.state index 67d5e6749..5b683d8de 100644 --- a/kmir/src/tests/integration/data/exec-smir/references/weirdRefs.state +++ b/kmir/src/tests/integration/data/exec-smir/references/weirdRefs.state @@ -35,45 +35,45 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( typedValue ( Integer ( 43 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( typedValue ( BoolVal ( true ) , ty ( 25 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 43 , 64 , false ) , ty ( 26 ) , mutabilityMut ) ) ) , ty ( 30 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) , mutabilityMut ) , ty ( 31 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( typedLocal ( Integer ( 43 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( typedLocal ( BoolVal ( true ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 43 , 64 , false ) , ty ( 26 ) , mutabilityMut ) ) ) , ty ( 30 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) , mutabilityMut ) , ty ( 31 ) , mutabilityNot ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 32 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) , mutabilityMut ) , ty ( 31 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 5 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 33 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 32 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) , mutabilityMut ) , ty ( 31 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 5 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 33 ) , mutabilityNot ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 32 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) ) , ty ( 34 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 9 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 35 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 43 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) - ListItem ( newLocal ( ty ( 32 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 23 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 2 ) , ty ( 26 ) ) .ProjectionElems ) , mutabilityMut ) , ty ( 36 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 32 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) ) , ty ( 34 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 9 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 35 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 43 , 8 , true ) , ty ( 2 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 32 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 23 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 2 ) , ty ( 26 ) ) .ProjectionElems ) , mutabilityMut ) , ty ( 36 ) , mutabilityNot ) ) ListItem ( Moved ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 32 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 32 ) , mutabilityMut ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 32 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) , mutabilityMut ) , ty ( 31 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) - ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 32 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) , mutabilityMut ) , ty ( 31 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Reference ( 0 , place (... local: local ( 1 ) , projection: .ProjectionElems ) , mutabilityMut ) , ty ( 29 ) , mutabilityMut ) ) .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 7 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b" " , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 9 ) ) ) ) operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 10 ) ) ) ) operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b" \x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) .Operands ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 12 ) ) ) ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 58 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 42 , basicBlockIdx ( 1 ) ) .Branches , otherwise: basicBlockIdx ( 2 ) ) ) , span: span ( 50 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 5 ) , projection: .ProjectionElems ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 20 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 6 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 20 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"+" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 13 ) ) ) ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 64 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 43 , basicBlockIdx ( 3 ) ) .Branches , otherwise: basicBlockIdx ( 4 ) ) ) , span: span ( 59 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 65 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 15 ) ) ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 65 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 67 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 8 ) , variantIdx ( 0 ) , genericArgKindLifetime ( region (... kind: regionKindReErased ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandCopy ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 68 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 9 ) , projection: .ProjectionElems ) ) ) , span: span ( 69 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 21 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 11 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) , span: span ( 70 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 21 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 70 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandCopy ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 43 , basicBlockIdx ( 5 ) ) .Branches , otherwise: basicBlockIdx ( 6 ) ) ) , span: span ( 66 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 71 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 16 ) ) ) ) .Operands , destination: place (... local: local ( 8 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 71 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 22 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 11 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) , span: span ( 73 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 22 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 74 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 17 ) ) ) ) ) ) , span: span ( 73 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 23 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 11 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) , span: span ( 75 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 23 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 2 ) , ty ( 26 ) ) .ProjectionElems ) ) ) , span: span ( 75 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 24 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 11 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) , span: span ( 76 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 15 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 24 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 76 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 77 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 16 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 72 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 8 ) ) .Branches , otherwise: basicBlockIdx ( 7 ) ) ) , span: span ( 72 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 78 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 2 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 18 ) ) ) ) .Operands , destination: place (... local: local ( 13 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 78 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 18 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 80 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 18 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 43 , basicBlockIdx ( 9 ) ) .Branches , otherwise: basicBlockIdx ( 10 ) ) ) , span: span ( 79 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 81 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 3 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 19 ) ) ) ) .Operands , destination: place (... local: local ( 17 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 81 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 82 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 83 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 4 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 20 ) ) ) ) .Operands , destination: place (... local: local ( 19 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 83 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 84 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 85 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 31 ) , span: span ( 86 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 58 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 32 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 31 ) , span: span ( 87 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 33 ) , span: span ( 88 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 32 ) , span: span ( 71 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 34 ) , span: span ( 89 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 67 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 35 ) , span: span ( 90 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 91 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 32 ) , span: span ( 78 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 36 ) , span: span ( 92 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 76 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 72 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 32 ) , span: span ( 81 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 80 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 32 ) , span: span ( 83 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 31 ) , span: span ( 88 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 90 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 90 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 90 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 90 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 85 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r1" ) , sourceInfo: sourceInfo (... span: span ( 86 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r1" ) , sourceInfo: sourceInfo (... span: span ( 87 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r2" ) , sourceInfo: sourceInfo (... span: span ( 88 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 89 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "ee" ) , sourceInfo: sourceInfo (... span: span ( 90 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "vv" ) , sourceInfo: sourceInfo (... span: span ( 91 ) , scope: sourceScope ( 7 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r3" ) , sourceInfo: sourceInfo (... span: span ( 92 ) , scope: sourceScope ( 8 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 93 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 7 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b" " , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 9 ) ) ) ) operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 10 ) ) ) ) operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b" \x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) .Operands ) ) , span: span ( 54 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"*" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 12 ) ) ) ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 58 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 42 , basicBlockIdx ( 1 ) ) .Branches , otherwise: basicBlockIdx ( 2 ) ) ) , span: span ( 50 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 5 ) , projection: .ProjectionElems ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 20 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 6 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 20 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"+" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 2 ) , id: mirConstId ( 13 ) ) ) ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 64 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 43 , basicBlockIdx ( 3 ) ) .Branches , otherwise: basicBlockIdx ( 4 ) ) ) , span: span ( 59 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 65 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 15 ) ) ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 65 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 67 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 8 ) , variantIdx ( 0 ) , genericArgKindLifetime ( region (... kind: regionKindReErased ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandCopy ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 68 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 9 ) , projection: .ProjectionElems ) ) ) , span: span ( 69 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 21 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 11 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) , span: span ( 70 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 21 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 70 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandCopy ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 43 , basicBlockIdx ( 5 ) ) .Branches , otherwise: basicBlockIdx ( 6 ) ) ) , span: span ( 66 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 71 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 1 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 16 ) ) ) ) .Operands , destination: place (... local: local ( 8 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 71 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 22 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 11 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) , span: span ( 73 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 22 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 74 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 17 ) ) ) ) ) ) , span: span ( 73 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 23 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 11 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) , span: span ( 75 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 23 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 2 ) , ty ( 26 ) ) .ProjectionElems ) ) ) , span: span ( 75 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 24 ) , projection: .ProjectionElems ) , rvalue: rvalueCopyForDeref ( place (... local: local ( 11 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 29 ) ) .ProjectionElems ) ) ) , span: span ( 76 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 15 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 24 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 2 ) ) .ProjectionElems ) ) ) ) , span: span ( 76 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: projectionElemDeref .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , ty ( 26 ) ) ) , span: span ( 77 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 16 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 72 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 8 ) ) .Branches , otherwise: basicBlockIdx ( 7 ) ) ) , span: span ( 72 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 78 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 2 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 18 ) ) ) ) .Operands , destination: place (... local: local ( 13 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 78 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 18 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 80 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 18 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 43 , basicBlockIdx ( 9 ) ) .Branches , otherwise: basicBlockIdx ( 10 ) ) ) , span: span ( 79 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 81 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 3 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 19 ) ) ) ) .Operands , destination: place (... local: local ( 17 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 81 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 82 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 83 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 27 ) , id: mirConstId ( 14 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 4 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 28 ) , id: mirConstId ( 20 ) ) ) ) .Operands , destination: place (... local: local ( 19 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 83 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 84 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 30 ) , span: span ( 85 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 31 ) , span: span ( 86 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 58 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 32 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 31 ) , span: span ( 87 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 33 ) , span: span ( 88 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 32 ) , span: span ( 71 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 34 ) , span: span ( 89 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 67 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 35 ) , span: span ( 90 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 91 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 32 ) , span: span ( 78 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 36 ) , span: span ( 92 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 2 ) , span: span ( 76 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 72 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 32 ) , span: span ( 81 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 80 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 32 ) , span: span ( 83 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 31 ) , span: span ( 88 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 90 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 90 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 90 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 29 ) , span: span ( 90 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 85 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r1" ) , sourceInfo: sourceInfo (... span: span ( 86 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r1" ) , sourceInfo: sourceInfo (... span: span ( 87 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r2" ) , sourceInfo: sourceInfo (... span: span ( 88 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "e" ) , sourceInfo: sourceInfo (... span: span ( 89 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "ee" ) , sourceInfo: sourceInfo (... span: span ( 90 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "vv" ) , sourceInfo: sourceInfo (... span: span ( 91 ) , scope: sourceScope ( 7 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r3" ) , sourceInfo: sourceInfo (... span: span ( 92 ) , scope: sourceScope ( 8 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 93 ) ) .Bodies ) .Map @@ -90,4 +90,5 @@ ty ( 26 ) |-> rigidTyUint ( uintTyUsize ) ty ( 41 ) |-> rigidTyUint ( uintTyU32 ) - \ No newline at end of file + + diff --git a/kmir/src/tests/integration/data/exec-smir/structs-tuples/struct_field_update.smir.json b/kmir/src/tests/integration/data/exec-smir/structs-tuples/struct_field_update.smir.json index 9b47e0ca3..ce1206711 100644 --- a/kmir/src/tests/integration/data/exec-smir/structs-tuples/struct_field_update.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/structs-tuples/struct_field_update.smir.json @@ -1,1895 +1 @@ -{ - "name": "struct_field_update", - "crate_id": 10235230017850619163, - "allocs": [], - "functions": [ - [ - 23, - { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hbb836054d8d1b867E" - } - ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h5675cbdc818cdcb9E" - } - ], - [ - 32, - { - "NoOpSym": "" - } - ], - [ - 19, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h3f66b0239d77a98aE" - } - ], - [ - 0, - { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" - } - ], - [ - 20, - { - "IntrinsicSym": "black_box" - } - ], - [ - 14, - { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h91da9245de8630b4E" - } - ], - [ - 21, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h7353dbc165af6e0cE" - } - ] - ], - "uneval_consts": [], - "items": [ - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h3f66b0239d77a98aE", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start17h7596bfce4c2de521E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, - { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] - } - } - ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ - { - "Downcast": 0 - }, - { - "Field": [ - 0, - 6 - ] - } - ] - } - } - } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 - } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h7353dbc165af6e0cE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h91da9245de8630b4E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 17, - "id": 8 - } - } - } - } - ] - }, - "span": 46 - } - ], - "terminator": { - "kind": "Return", - "span": 45 - } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN19struct_field_update4main17h502cdc578af7c9e8E", - "mono_item_kind": { - "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [] - }, - { - "Aggregate": [ - "Tuple", - [ - { - "Constant": { - "span": 51, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 1, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 4, - "mutability": "Mut" - } - }, - "ty": 16, - "id": 9 - } - } - }, - { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 2, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 4, - "mutability": "Mut" - } - }, - "ty": 16, - "id": 10 - } - } - } - ] - ] - } - ] - }, - "span": 53 - }, - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, - { - "Aggregate": [ - { - "Adt": [ - 7, - 0, - [], - null, - null - ] - }, - [ - { - "Constant": { - "span": 54, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 10, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 4, - "mutability": "Mut" - } - }, - "ty": 16, - "id": 11 - } - } - }, - { - "Constant": { - "span": 55, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 25, - "id": 12 - } - } - }, - { - "Constant": { - "span": 56, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 36, - 64 - ], - "provenance": { - "ptrs": [] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 26, - "id": 13 - } - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ] - ] - } - ] - }, - "span": 57 - }, - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [ - { - "Field": [ - 1, - 25 - ] - } - ] - }, - { - "Use": { - "Constant": { - "span": 58, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 1 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 25, - "id": 14 - } - } - } - } - ] - }, - "span": 59 - }, - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - { - "Field": [ - 0, - 16 - ] - } - ] - } - } - } - ] - }, - "span": 60 - }, - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [ - { - "Field": [ - 3, - 27 - ] - }, - { - "Field": [ - 1, - 16 - ] - } - ] - }, - { - "Use": { - "Move": { - "local": 3, - "projection": [] - } - } - } - ] - }, - "span": 61 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - { - "Field": [ - 3, - 27 - ] - }, - { - "Field": [ - 0, - 16 - ] - } - ] - } - } - } - ] - }, - "span": 62 - }, - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [ - { - "Field": [ - 0, - 16 - ] - } - ] - }, - { - "Use": { - "Move": { - "local": 4, - "projection": [] - } - } - } - ] - }, - "span": 63 - }, - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [ - { - "Field": [ - 2, - 26 - ] - } - ] - }, - { - "Use": { - "Constant": { - "span": 64, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 51, - 51, - 51, - 51, - 51, - 115, - 69, - 64 - ], - "provenance": { - "ptrs": [] - }, - "align": 8, - "mutability": "Mut" - } - }, - "ty": 26, - "id": 15 - } - } - } - } - ] - }, - "span": 65 - } - ], - "terminator": { - "kind": "Return", - "span": 50 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 66, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 67, - "mutability": "Mut" - }, - { - "ty": 27, - "span": 53, - "mutability": "Mut" - }, - { - "ty": 16, - "span": 60, - "mutability": "Mut" - }, - { - "ty": 16, - "span": 62, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "s", - "source_info": { - "span": 67, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 68 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h09bc4ea8ad5997d5E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h5675cbdc818cdcb9E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h21cb4ff546418550E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hbb836054d8d1b867E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ - { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] - }, - { - "Field": [ - 0, - 9 - ] - } - ] - } - } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] - } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 - }, - "span": 27 - } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } - ] - } - }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - } - ], - "types": [ - [ - 6, - { - "RigidTy": { - "Int": "Isize" - } - } - ], - [ - 26, - { - "RigidTy": { - "Float": "F64" - } - } - ], - [ - 16, - { - "RigidTy": { - "Int": "I32" - } - } - ], - [ - 2, - { - "RigidTy": { - "Int": "I8" - } - } - ], - [ - 25, - { - "RigidTy": "Bool" - } - ], - [ - 9, - { - "RigidTy": { - "Uint": "U8" - } - } - ] - ], - "debug": null -} +{"name":"struct_field_update","crate_id":10235230017850619163,"allocs":[],"functions":[[13,{"NormalSym":"_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h5675cbdc818cdcb9E"}],[23,{"NormalSym":"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hbb836054d8d1b867E"}],[19,{"NormalSym":"_ZN4core3ops8function6FnOnce9call_once17h3f66b0239d77a98aE"}],[0,{"NormalSym":"_ZN3std2rt19lang_start_internal17h018b8394ba015d86E"}],[21,{"NormalSym":"_ZN4core3ops8function6FnOnce9call_once17h7353dbc165af6e0cE"}],[20,{"IntrinsicSym":"black_box"}],[32,{"NoOpSym":""}],[14,{"NormalSym":"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h91da9245de8630b4E"}]],"uneval_consts":[],"items":[{"symbol_name":"_ZN3std2rt10lang_start17h7596bfce4c2de521E","mono_item_kind":{"MonoItemFn":{"name":"std::rt::lang_start::<()>","id":0,"body":[{"blocks":[{"statements":[{"kind":{"StorageLive":5},"span":1},{"kind":{"StorageLive":6},"span":2},{"kind":{"StorageLive":8},"span":3},{"kind":{"Assign":[{"local":8,"projection":[]},{"Aggregate":[{"Closure":[1,[{"Type":1},{"Type":2},{"Type":3},{"Type":4}]]},[{"Copy":{"local":1,"projection":[]}}]]}]},"span":3},{"kind":{"Assign":[{"local":7,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":8,"projection":[]}]}]},"span":2},{"kind":{"Assign":[{"local":6,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Copy":{"local":7,"projection":[]}},5]}]},"span":2}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":0,"user_ty":null,"const_":{"kind":"ZeroSized","ty":0,"id":0}}},"args":[{"Move":{"local":6,"projection":[]}},{"Move":{"local":2,"projection":[]}},{"Move":{"local":3,"projection":[]}},{"Move":{"local":4,"projection":[]}}],"destination":{"local":5,"projection":[]},"target":1,"unwind":"Continue"}},"span":1}},{"statements":[{"kind":{"StorageDead":6},"span":5},{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Copy":{"local":5,"projection":[{"Downcast":0},{"Field":[0,6]}]}}}]},"span":6},{"kind":{"StorageDead":8},"span":7},{"kind":{"StorageDead":5},"span":7}],"terminator":{"kind":"Return","span":4}}],"locals":[{"ty":6,"span":8,"mutability":"Mut"},{"ty":7,"span":9,"mutability":"Not"},{"ty":6,"span":10,"mutability":"Not"},{"ty":8,"span":11,"mutability":"Not"},{"ty":9,"span":12,"mutability":"Not"},{"ty":10,"span":1,"mutability":"Mut"},{"ty":5,"span":2,"mutability":"Mut"},{"ty":11,"span":2,"mutability":"Not"},{"ty":12,"span":3,"mutability":"Not"}],"arg_count":4,"var_debug_info":[{"name":"main","source_info":{"span":9,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":[]}},"argument_index":1},{"name":"argc","source_info":{"span":10,"scope":0},"composite":null,"value":{"Place":{"local":2,"projection":[]}},"argument_index":2},{"name":"argv","source_info":{"span":11,"scope":0},"composite":null,"value":{"Place":{"local":3,"projection":[]}},"argument_index":3},{"name":"sigpipe","source_info":{"span":12,"scope":0},"composite":null,"value":{"Place":{"local":4,"projection":[]}},"argument_index":4},{"name":"v","source_info":{"span":6,"scope":1},"composite":null,"value":{"Place":{"local":0,"projection":[]}},"argument_index":null}],"spread_arg":null,"span":13}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce9call_once17h7353dbc165af6e0cE","mono_item_kind":{"MonoItemFn":{"name":"<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once","id":3,"body":[{"blocks":[{"statements":[{"kind":{"Assign":[{"local":3,"projection":[]},{"Ref":[{"kind":"ReErased"},{"Mut":{"kind":"Default"}},{"local":1,"projection":[]}]}]},"span":43}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":43,"user_ty":null,"const_":{"kind":"ZeroSized","ty":23,"id":7}}},"args":[{"Move":{"local":3,"projection":[]}},{"Move":{"local":2,"projection":[]}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":{"Cleanup":3}}},"span":43}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":2,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":4,"unwind":"Terminate"}},"span":43}},{"statements":[],"terminator":{"kind":"Resume","span":43}}],"locals":[{"ty":16,"span":43,"mutability":"Mut"},{"ty":12,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"},{"ty":24,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null},{"symbol_name":"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h91da9245de8630b4E","mono_item_kind":{"MonoItemFn":{"name":"<() as std::process::Termination>::report","id":5,"body":[{"blocks":[{"statements":[{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Constant":{"span":46,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[0],"provenance":{"ptrs":[]},"align":1,"mutability":"Mut"}},"ty":17,"id":8}}}}]},"span":46}],"terminator":{"kind":"Return","span":45}}],"locals":[{"ty":17,"span":47,"mutability":"Mut"},{"ty":1,"span":48,"mutability":"Not"}],"arg_count":1,"var_debug_info":[{"name":"self","source_info":{"span":48,"scope":0},"composite":null,"value":{"Const":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}},"argument_index":1}],"spread_arg":null,"span":49}]}},"details":null},{"symbol_name":"_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h5675cbdc818cdcb9E","mono_item_kind":{"MonoItemFn":{"name":"std::sys::backtrace::__rust_begin_short_backtrace::","id":2,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":31,"user_ty":null,"const_":{"kind":"ZeroSized","ty":19,"id":3}}},"args":[{"Move":{"local":1,"projection":[]}},{"Constant":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":33}},{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":34,"user_ty":null,"const_":{"kind":"ZeroSized","ty":20,"id":5}}},"args":[{"Constant":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}}],"destination":{"local":2,"projection":[]},"target":2,"unwind":"Unreachable"}},"span":35}},{"statements":[],"terminator":{"kind":"Return","span":36}}],"locals":[{"ty":1,"span":37,"mutability":"Mut"},{"ty":7,"span":38,"mutability":"Not"},{"ty":1,"span":39,"mutability":"Not"}],"arg_count":1,"var_debug_info":[{"name":"f","source_info":{"span":38,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":[]}},"argument_index":1},{"name":"result","source_info":{"span":40,"scope":1},"composite":null,"value":{"Place":{"local":0,"projection":[]}},"argument_index":null},{"name":"dummy","source_info":{"span":41,"scope":2},"composite":null,"value":{"Const":{"span":32,"user_ty":null,"const_":{"kind":"ZeroSized","ty":1,"id":4}}},"argument_index":1}],"spread_arg":null,"span":42}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce9call_once17h3f66b0239d77a98aE","mono_item_kind":{"MonoItemFn":{"name":">::call_once","id":3,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Move":{"local":1,"projection":[]}},"args":[],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}}],"locals":[{"ty":1,"span":43,"mutability":"Mut"},{"ty":7,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null},{"symbol_name":"_ZN19struct_field_update4main17h502cdc578af7c9e8E","mono_item_kind":{"MonoItemFn":{"name":"main","id":6,"body":[{"blocks":[{"statements":[{"kind":{"Assign":[{"local":2,"projection":[]},{"Aggregate":["Tuple",[{"Constant":{"span":51,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[1,0,0,0],"provenance":{"ptrs":[]},"align":4,"mutability":"Mut"}},"ty":16,"id":9}}},{"Constant":{"span":52,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[2,0,0,0],"provenance":{"ptrs":[]},"align":4,"mutability":"Mut"}},"ty":16,"id":10}}}]]}]},"span":53},{"kind":{"Assign":[{"local":1,"projection":[]},{"Aggregate":[{"Adt":[7,0,[],null,null]},[{"Constant":{"span":54,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[10,0,0,0],"provenance":{"ptrs":[]},"align":4,"mutability":"Mut"}},"ty":16,"id":11}}},{"Constant":{"span":55,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[0],"provenance":{"ptrs":[]},"align":1,"mutability":"Mut"}},"ty":25,"id":12}}},{"Constant":{"span":56,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[0,0,0,0,0,0,36,64],"provenance":{"ptrs":[]},"align":8,"mutability":"Mut"}},"ty":26,"id":13}}},{"Move":{"local":2,"projection":[]}}]]}]},"span":57},{"kind":{"Assign":[{"local":1,"projection":[{"Field":[1,25]}]},{"Use":{"Constant":{"span":58,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[1],"provenance":{"ptrs":[]},"align":1,"mutability":"Mut"}},"ty":25,"id":14}}}}]},"span":59},{"kind":{"Assign":[{"local":3,"projection":[]},{"Use":{"Copy":{"local":1,"projection":[{"Field":[0,16]}]}}}]},"span":60},{"kind":{"Assign":[{"local":1,"projection":[{"Field":[3,27]},{"Field":[1,16]}]},{"Use":{"Move":{"local":3,"projection":[]}}}]},"span":61},{"kind":{"Assign":[{"local":4,"projection":[]},{"Use":{"Copy":{"local":1,"projection":[{"Field":[3,27]},{"Field":[0,16]}]}}}]},"span":62},{"kind":{"Assign":[{"local":1,"projection":[{"Field":[0,16]}]},{"Use":{"Move":{"local":4,"projection":[]}}}]},"span":63},{"kind":{"Assign":[{"local":1,"projection":[{"Field":[2,26]}]},{"Use":{"Constant":{"span":64,"user_ty":null,"const_":{"kind":{"Allocated":{"bytes":[51,51,51,51,51,115,69,64],"provenance":{"ptrs":[]},"align":8,"mutability":"Mut"}},"ty":26,"id":15}}}}]},"span":65}],"terminator":{"kind":"Return","span":50}}],"locals":[{"ty":1,"span":66,"mutability":"Mut"},{"ty":28,"span":67,"mutability":"Mut"},{"ty":27,"span":53,"mutability":"Mut"},{"ty":16,"span":60,"mutability":"Mut"},{"ty":16,"span":62,"mutability":"Mut"}],"arg_count":0,"var_debug_info":[{"name":"s","source_info":{"span":67,"scope":1},"composite":null,"value":{"Place":{"local":1,"projection":[]}},"argument_index":null}],"spread_arg":null,"span":68}]}},"details":null},{"symbol_name":"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h09bc4ea8ad5997d5E","mono_item_kind":{"MonoItemFn":{"name":"<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once","id":3,"body":[{"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":43,"user_ty":null,"const_":{"kind":"ZeroSized","ty":21,"id":6}}},"args":[{"Move":{"local":1,"projection":["Deref"]}},{"Move":{"local":2,"projection":[]}}],"destination":{"local":0,"projection":[]},"target":1,"unwind":"Continue"}},"span":43}},{"statements":[],"terminator":{"kind":"Return","span":43}}],"locals":[{"ty":16,"span":43,"mutability":"Mut"},{"ty":22,"span":43,"mutability":"Not"},{"ty":1,"span":43,"mutability":"Not"}],"arg_count":2,"var_debug_info":[],"spread_arg":2,"span":43}]}},"details":null},{"symbol_name":"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hbb836054d8d1b867E","mono_item_kind":{"MonoItemFn":{"name":"std::rt::lang_start::<()>::{closure#0}","id":1,"body":[{"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":16},{"kind":{"StorageLive":3},"span":15},{"kind":{"StorageLive":4},"span":17},{"kind":{"Assign":[{"local":4,"projection":[]},{"Use":{"Copy":{"local":1,"projection":["Deref",{"Field":[0,7]}]}}}]},"span":17}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":14,"user_ty":null,"const_":{"kind":"ZeroSized","ty":13,"id":1}}},"args":[{"Move":{"local":4,"projection":[]}}],"destination":{"local":3,"projection":[]},"target":1,"unwind":"Continue"}},"span":15}},{"statements":[{"kind":{"StorageDead":4},"span":19}],"terminator":{"kind":{"Call":{"func":{"Constant":{"span":18,"user_ty":null,"const_":{"kind":"ZeroSized","ty":14,"id":2}}},"args":[{"Move":{"local":3,"projection":[]}}],"destination":{"local":2,"projection":[]},"target":2,"unwind":"Continue"}},"span":16}},{"statements":[{"kind":{"StorageDead":3},"span":21},{"kind":{"StorageLive":5},"span":22},{"kind":{"Assign":[{"local":5,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":2,"projection":[{"Field":[0,15]}]}]}]},"span":22},{"kind":{"StorageLive":6},"span":23},{"kind":{"Assign":[{"local":6,"projection":[]},{"Use":{"Copy":{"local":2,"projection":[{"Field":[0,15]},{"Field":[0,9]}]}}}]},"span":23},{"kind":{"Assign":[{"local":0,"projection":[]},{"Cast":["IntToInt",{"Move":{"local":6,"projection":[]}},16]}]},"span":24},{"kind":{"StorageDead":6},"span":25},{"kind":{"StorageDead":5},"span":26},{"kind":{"StorageDead":2},"span":27}],"terminator":{"kind":"Return","span":20}}],"locals":[{"ty":16,"span":28,"mutability":"Mut"},{"ty":11,"span":3,"mutability":"Mut"},{"ty":17,"span":16,"mutability":"Mut"},{"ty":1,"span":15,"mutability":"Mut"},{"ty":7,"span":17,"mutability":"Mut"},{"ty":18,"span":22,"mutability":"Mut"},{"ty":9,"span":23,"mutability":"Mut"}],"arg_count":1,"var_debug_info":[{"name":"main","source_info":{"span":9,"scope":0},"composite":null,"value":{"Place":{"local":1,"projection":["Deref",{"Field":[0,7]}]}},"argument_index":null},{"name":"self","source_info":{"span":29,"scope":1},"composite":null,"value":{"Place":{"local":2,"projection":[]}},"argument_index":1},{"name":"self","source_info":{"span":30,"scope":2},"composite":null,"value":{"Place":{"local":5,"projection":[]}},"argument_index":1}],"spread_arg":null,"span":3}]}},"details":null},{"symbol_name":"_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h21cb4ff546418550E","mono_item_kind":{"MonoItemFn":{"name":"std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>","id":4,"body":[{"blocks":[{"statements":[],"terminator":{"kind":"Return","span":44}}],"locals":[{"ty":1,"span":44,"mutability":"Mut"},{"ty":22,"span":44,"mutability":"Not"}],"arg_count":1,"var_debug_info":[],"spread_arg":null,"span":44}]}},"details":null}],"types":[[16,{"RigidTy":{"Int":"I32"}}],[26,{"RigidTy":{"Float":"F64"}}],[25,{"RigidTy":"Bool"}],[2,{"RigidTy":{"Int":"I8"}}],[6,{"RigidTy":{"Int":"Isize"}}],[9,{"RigidTy":{"Uint":"U8"}}]],"debug":null} \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/structs-tuples/struct_field_update.state b/kmir/src/tests/integration/data/exec-smir/structs-tuples/struct_field_update.state index db5f4e5c3..59c8c4af0 100644 --- a/kmir/src/tests/integration/data/exec-smir/structs-tuples/struct_field_update.state +++ b/kmir/src/tests/integration/data/exec-smir/structs-tuples/struct_field_update.state @@ -25,12 +25,12 @@ unwindActionUnreachable - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( typedValue ( Integer ( 1 , 32 , true ) , ty ( 16 ) , mutabilityMut ) ) - ListItem ( typedValue ( BoolVal ( true ) , ty ( 25 ) , mutabilityNot ) ) - ListItem ( typedValue ( Any , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( typedValue ( Integer ( 1 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) - ListItem ( typedValue ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityMut ) ) ) , ty ( 27 ) , mutabilityMut ) ) ) , ty ( 28 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( typedLocal ( Integer ( 1 , 32 , true ) , ty ( 16 ) , mutabilityMut ) ) + ListItem ( typedLocal ( BoolVal ( true ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Any , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( typedLocal ( Integer ( 1 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityMut ) ) ) , ty ( 27 ) , mutabilityMut ) ) ) , ty ( 28 ) , mutabilityMut ) ) ListItem ( Moved ) ListItem ( Moved ) ListItem ( Moved ) @@ -40,12 +40,12 @@ .List - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 9 ) ) ) ) operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x02\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 10 ) ) ) ) .Operands ) ) , span: span ( 53 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 7 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 54 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 11 ) ) ) ) operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 12 ) ) ) ) operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00$@" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 13 ) ) ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 14 ) ) ) ) ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 3 ) , ty ( 27 ) ) projectionElemField ( fieldIdx ( 1 ) , ty ( 16 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 3 ) , ty ( 27 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 63 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 26 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 64 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"33333sE@" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 15 ) ) ) ) ) ) , span: span ( 65 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 50 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 67 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 53 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 16 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 16 ) , span: span ( 62 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "s" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 68 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandConstant ( constOperand (... span: span ( 51 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 9 ) ) ) ) operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x02\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 10 ) ) ) ) .Operands ) ) , span: span ( 53 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 7 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 54 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 11 ) ) ) ) operandConstant ( constOperand (... span: span ( 55 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 12 ) ) ) ) operandConstant ( constOperand (... span: span ( 56 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00$@" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 13 ) ) ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 14 ) ) ) ) ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 3 ) , ty ( 27 ) ) projectionElemField ( fieldIdx ( 1 ) , ty ( 16 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 3 ) , ty ( 27 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 62 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 63 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 26 ) ) .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 64 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"33333sE@" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 15 ) ) ) ) ) ) , span: span ( 65 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 50 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 67 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 53 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 16 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 16 ) , span: span ( 62 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "s" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 68 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.84.state b/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.84.state index 3092d7d0d..8be197b47 100644 --- a/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.84.state +++ b/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.84.state @@ -25,38 +25,38 @@ unwindActionContinue - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) - ListItem ( typedValue ( BoolVal ( false ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Any , ty ( 27 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) + ListItem ( typedLocal ( BoolVal ( false ) , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Any , ty ( 27 ) , mutabilityNot ) ) - ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( typedValue ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) - ListItem ( typedValue ( BoolVal ( false ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Any , ty ( 27 ) , mutabilityNot ) ) ) , ty ( 28 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( typedValue ( Integer ( 11 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) - ListItem ( typedValue ( BoolVal ( true ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Any , ty ( 27 ) , mutabilityMut ) ) ) , ty ( 29 ) , mutabilityNot ) ) + ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( noValue ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( typedLocal ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) + ListItem ( typedLocal ( BoolVal ( false ) , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Any , ty ( 27 ) , mutabilityNot ) ) ) , ty ( 28 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Aggregate ( ListItem ( typedLocal ( Integer ( 11 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) + ListItem ( typedLocal ( BoolVal ( true ) , ty ( 26 ) , mutabilityNot ) ) + ListItem ( typedLocal ( Any , ty ( 27 ) , mutabilityMut ) ) ) , ty ( 29 ) , mutabilityNot ) ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityNot ) ) ListItem ( Moved ) ListItem ( Moved ) ListItem ( Moved ) - ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) ) - ListItem ( newLocal ( ty ( 16 ) , mutabilityMut ) ) - ListItem ( newLocal ( ty ( 26 ) , mutabilityMut ) ) - ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) ) ) ) + ListItem ( noValue ( ty ( 1 ) , mutabilityNot ) ) + ListItem ( noValue ( ty ( 16 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 26 ) , mutabilityMut ) ) + ListItem ( noValue ( ty ( 27 ) , mutabilityMut ) ) ) ) - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "foo" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 73 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 74 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 16 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 77 ) , mut: mutabilityNot ) .LocalDecls , argCount: 3 , varDebugInfo: varDebugInfo (... name: symbol ( "_i" ) , sourceInfo: sourceInfo (... span: span ( 75 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "_b" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "_f" ) , sourceInfo: sourceInfo (... span: span ( 77 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 3 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 78 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 7 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 10 ) ) ) ) operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) operandConstant ( constOperand (... span: span ( 54 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00$@" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 13 ) ) ) ) operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 14 ) ) ) ) operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 62 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 65 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 66 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 67 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 8 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 64 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 68 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 69 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 70 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 71 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 56 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 51 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 16 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 62 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 16 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 67 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "s" ) , sourceInfo: sourceInfo (... span: span ( 70 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "t" ) , sourceInfo: sourceInfo (... span: span ( 71 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 72 ) ) ) ) + ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) .Bodies ) + ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) .Bodies ) + ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) .Bodies ) + ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) .Bodies ) + ty ( 25 ) |-> monoItemFn (... name: symbol ( "foo" ) , id: defId ( 8 ) , body: body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 73 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 74 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 16 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 77 ) , mut: mutabilityNot ) .LocalDecls , argCount: 3 , varDebugInfo: varDebugInfo (... name: symbol ( "_i" ) , sourceInfo: sourceInfo (... span: span ( 75 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "_b" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "_f" ) , sourceInfo: sourceInfo (... span: span ( 77 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 3 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 78 ) ) .Bodies ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 7 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 10 ) ) ) ) operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) operandConstant ( constOperand (... span: span ( 54 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00$@" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 13 ) ) ) ) operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 14 ) ) ) ) operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 62 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 65 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 66 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 67 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 8 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 64 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 68 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 69 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 70 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 71 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 56 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 51 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 16 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 62 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 16 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 67 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "s" ) , sourceInfo: sourceInfo (... span: span ( 70 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "t" ) , sourceInfo: sourceInfo (... span: span ( 71 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 72 ) ) .Bodies ) .Map diff --git a/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.90.state b/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.90.state deleted file mode 100644 index 3092d7d0d..000000000 --- a/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.90.state +++ /dev/null @@ -1,75 +0,0 @@ - - - #execTerminator ( terminator (... kind: terminatorKindReturn , span: span ( 73 ) ) ) ~> .K - - - noReturn - - - ty ( 25 ) - - - - ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 73 ) ) ) ) - - - ty ( -1 ) - - - place (... local: local ( 4 ) , projection: .ProjectionElems ) - - - someBasicBlockIdx ( basicBlockIdx ( 1 ) ) - - - unwindActionContinue - - - ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) - ListItem ( typedValue ( BoolVal ( false ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Any , ty ( 27 ) , mutabilityNot ) ) - - - - ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( typedValue ( Integer ( 10 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) - ListItem ( typedValue ( BoolVal ( false ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Any , ty ( 27 ) , mutabilityNot ) ) ) , ty ( 28 ) , mutabilityNot ) ) - ListItem ( typedValue ( Aggregate ( ListItem ( typedValue ( Integer ( 11 , 32 , true ) , ty ( 16 ) , mutabilityNot ) ) - ListItem ( typedValue ( BoolVal ( true ) , ty ( 26 ) , mutabilityNot ) ) - ListItem ( typedValue ( Any , ty ( 27 ) , mutabilityMut ) ) ) , ty ( 29 ) , mutabilityNot ) ) - ListItem ( Moved ) - ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) ) - ListItem ( Moved ) - ListItem ( Moved ) - ListItem ( Moved ) - ListItem ( newLocal ( ty ( 1 ) , mutabilityNot ) ) - ListItem ( newLocal ( ty ( 16 ) , mutabilityMut ) ) - ListItem ( newLocal ( ty ( 26 ) , mutabilityMut ) ) - ListItem ( newLocal ( ty ( 27 ) , mutabilityMut ) ) ) ) - - - ty ( 13 ) |-> monoItemFn (... name: symbol ( "std::sys::backtrace::__rust_begin_short_backtrace::" ) , id: defId ( 2 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 31 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 19 ) , id: mirConstId ( 3 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 33 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 34 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 20 ) , id: mirConstId ( 5 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 35 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 36 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 37 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 38 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 39 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "f" ) , sourceInfo: sourceInfo (... span: span ( 38 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "result" ) , sourceInfo: sourceInfo (... span: span ( 40 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "dummy" ) , sourceInfo: sourceInfo (... span: span ( 41 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 42 ) ) ) ) - ty ( 14 ) |-> monoItemFn (... name: symbol ( "<() as std::process::Termination>::report" ) , id: defId ( 5 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 46 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 17 ) , id: mirConstId ( 8 ) ) ) ) ) ) , span: span ( 46 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 45 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 17 ) , span: span ( 47 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 48 ) , mut: mutabilityNot ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 48 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsConst ( constOperand (... span: span ( 32 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 1 ) , id: mirConstId ( 4 ) ) ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 49 ) ) ) ) - ty ( 19 ) |-> monoItemFn (... name: symbol ( ">::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , args: .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 21 ) |-> monoItemFn (... name: symbol ( "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" ) , id: defId ( 3 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindMut (... kind: mutBorrowKindDefault ) , place (... local: local ( 1 ) , projection: .ProjectionElems ) ) ) , span: span ( 43 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 43 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 23 ) , id: mirConstId ( 7 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionCleanup ( basicBlockIdx ( 3 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 2 ) , unwind: unwindActionContinue ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindDrop (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , target: basicBlockIdx ( 4 ) , unwind: unwindActionTerminate ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindResume , span: span ( 43 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 12 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 1 ) , span: span ( 43 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 24 ) , span: span ( 43 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: .VarDebugInfos , spreadArg: someLocal ( local ( 2 ) ) , span: span ( 43 ) ) ) ) - ty ( 23 ) |-> monoItemFn (... name: symbol ( "std::rt::lang_start::<()>::{closure#0}" ) , id: defId ( 1 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 2 ) ) , span: span ( 16 ) ) statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 15 ) ) statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 17 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) ) ) , span: span ( 17 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 14 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 13 ) , id: mirConstId ( 1 ) ) ) ) , args: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 15 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 19 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 18 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 14 ) , id: mirConstId ( 2 ) ) ) ) , args: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 2 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 16 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 21 ) ) statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 22 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) .ProjectionElems ) ) ) , span: span ( 22 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 15 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 9 ) ) .ProjectionElems ) ) ) ) , span: span ( 23 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindIntToInt , operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 16 ) ) ) , span: span ( 24 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 25 ) ) statement (... kind: statementKindStorageDead ( local ( 5 ) ) , span: span ( 26 ) ) statement (... kind: statementKindStorageDead ( local ( 2 ) ) , span: span ( 27 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 20 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 16 ) , span: span ( 28 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 11 ) , span: span ( 3 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 17 ) , span: span ( 16 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 15 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 7 ) , span: span ( 17 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 18 ) , span: span ( 22 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 23 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "main" ) , sourceInfo: sourceInfo (... span: span ( 9 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemField ( fieldIdx ( 0 ) , ty ( 7 ) ) .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 29 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 30 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 3 ) ) ) ) - ty ( 25 ) |-> monoItemFn (... name: symbol ( "foo" ) , id: defId ( 8 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 73 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 74 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 16 ) , span: span ( 75 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 76 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 77 ) , mut: mutabilityNot ) .LocalDecls , argCount: 3 , varDebugInfo: varDebugInfo (... name: symbol ( "_i" ) , sourceInfo: sourceInfo (... span: span ( 75 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "_b" ) , sourceInfo: sourceInfo (... span: span ( 76 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "_f" ) , sourceInfo: sourceInfo (... span: span ( 77 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 3 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 78 ) ) ) ) - ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 7 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandConstant ( constOperand (... span: span ( 52 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\n\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 10 ) ) ) ) operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 11 ) ) ) ) operandConstant ( constOperand (... span: span ( 54 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00$@" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 27 ) , id: mirConstId ( 12 ) ) ) ) .Operands ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandConstant ( constOperand (... span: span ( 57 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x0b\x00\x00\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 4 ) , mutability: mutabilityMut ) ) , ty: ty ( 16 ) , id: mirConstId ( 13 ) ) ) ) operandConstant ( constOperand (... span: span ( 58 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 26 ) , id: mirConstId ( 14 ) ) ) ) operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 59 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 60 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 61 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 62 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 50 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 51 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 9 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 16 ) ) .ProjectionElems ) ) ) ) , span: span ( 65 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 26 ) ) .ProjectionElems ) ) ) ) , span: span ( 66 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 2 ) , projection: projectionElemField ( fieldIdx ( 2 ) , ty ( 27 ) ) .ProjectionElems ) ) ) ) , span: span ( 67 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 63 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 25 ) , id: mirConstId ( 9 ) ) ) ) , args: operandMove ( place (... local: local ( 9 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 11 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 8 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 64 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 68 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 69 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 70 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 29 ) , span: span ( 71 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 56 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 51 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 16 ) , span: span ( 60 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 61 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 62 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 16 ) , span: span ( 65 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 26 ) , span: span ( 66 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 27 ) , span: span ( 67 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "s" ) , sourceInfo: sourceInfo (... span: span ( 70 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "t" ) , sourceInfo: sourceInfo (... span: span ( 71 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 72 ) ) ) ) - - - .Map - - - symbol ( "main" ) - - - ty ( 2 ) |-> rigidTyInt ( intTyI8 ) - ty ( 6 ) |-> rigidTyInt ( intTyIsize ) - ty ( 9 ) |-> rigidTyUint ( uintTyU8 ) - ty ( 16 ) |-> rigidTyInt ( intTyI32 ) - ty ( 26 ) |-> rigidTyBool - ty ( 27 ) |-> rigidTyFloat ( floatTyF64 ) - - \ No newline at end of file diff --git a/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.smir.json b/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.smir.json index f04cd7ef4..2100e09fd 100644 --- a/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.smir.json +++ b/kmir/src/tests/integration/data/exec-smir/structs-tuples/structs-tuples.smir.json @@ -1,2111 +1,2131 @@ { - "name": "structs_tuples", - "crate_id": 4825803685595141642, - "allocs": [], - "functions": [ - [ - 14, - { - "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha01f56bbeee4ceecE" - } + "name": "struct_tuple_fields", + "crate_id": 15052015653515667555, + "allocs": [], + "functions": [ + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hb280b8a231f5f9feE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h13fdc527832fef9bE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h14ef065ef2b7c26fE" + } + ], + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + } + ], + [ + 25, + { + "NormalSym": "_ZN19struct_tuple_fields3foo17h313cc5516683e5b2E" + } + ], + [ + 30, + { + "NoOpSym": "" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h29c5f28db416dd9bE" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h9fd74af38a279f31E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ] ], - [ - 19, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h5da2e9c3f6fcbd9eE" - } - ], - [ - 25, - { - "NormalSym": "_ZN14structs_tuples3foo17h3890d1fc66f78799E" - } - ], - [ - 0, - { - "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" - } - ], - [ - 33, - { - "NoOpSym": "" - } - ], - [ - 23, - { - "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h59dd244d53c82a21E" - } - ], - [ - 21, - { - "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h7ec7f065d73fc35aE" - } - ], - [ - 20, - { - "IntrinsicSym": "black_box" - } - ], - [ - 13, - { - "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h093a95c952625c6cE" - } - ] - ], - "uneval_consts": [], - "items": [ - { - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h0fc835eb50e37b13E", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 21, - "id": 6 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [ - "Deref" - ] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN14structs_tuples3foo17h3890d1fc66f78799E", - "mono_item_kind": { - "MonoItemFn": { - "name": "foo", - "id": 8, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 73 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 74, - "mutability": "Mut" - }, - { - "ty": 16, - "span": 75, - "mutability": "Not" - }, - { - "ty": 26, - "span": 76, - "mutability": "Not" - }, - { - "ty": 27, - "span": 77, - "mutability": "Not" - } - ], - "arg_count": 3, - "var_debug_info": [ - { - "name": "_i", - "source_info": { - "span": 75, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "_b", - "source_info": { - "span": 76, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "_f", - "source_info": { - "span": 77, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - } - ], - "spread_arg": null, - "span": 78 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start17h35bcf3f6dc6c431bE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>", - "id": 0, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 5 - }, - "span": 1 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 2 - }, - { - "kind": { - "StorageLive": 8 - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 8, - "projection": [] - }, + "uneval_consts": [], + "items": [ + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h12e57977f213b84cE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 4, + "body": [ { - "Aggregate": [ - { - "Closure": [ - 1, - [ - { - "Type": 1 - }, - { - "Type": 2 - }, - { - "Type": 3 - }, - { - "Type": 4 - } - ] - ] - }, - [ - { - "Copy": { - "local": 1, - "projection": [] + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } } - } - ] - ] - } - ] - }, - "span": 3 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 8, - "projection": [] - } - ] - } - ] - }, - "span": 2 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Cast": [ - { - "PointerCoercion": "Unsize" - }, - { - "Copy": { - "local": 7, - "projection": [] - } - }, - 5 - ] - } - ] - }, - "span": 2 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 0, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 0, - "id": 0 - } - } - }, - "args": [ - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - }, - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 4, - "projection": [] - } + ], + "locals": [ + { + "ty": 1, + "span": 44, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 44, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 44 } - ], - "destination": { - "local": 5, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 1 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 6 - }, - "span": 5 - }, - { - "kind": { - "Assign": [ + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h13fdc527832fef9bE", + "mono_item_kind": { + "MonoItemFn": { + "name": ">::call_once", + "id": 3, + "body": [ { - "local": 0, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 5, - "projection": [ + "blocks": [ { - "Downcast": 0 + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } }, { - "Field": [ - 0, - 6 - ] + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } } - ] - } - } + ], + "locals": [ + { + "ty": 1, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ] - }, - "span": 6 - }, - { - "kind": { - "StorageDead": 8 - }, - "span": 7 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 7 - } - ], - "terminator": { - "kind": "Return", - "span": 4 + ] } - } - ], - "locals": [ - { - "ty": 6, - "span": 8, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 9, - "mutability": "Not" - }, - { - "ty": 6, - "span": 10, - "mutability": "Not" - }, - { - "ty": 8, - "span": 11, - "mutability": "Not" - }, - { - "ty": 9, - "span": 12, - "mutability": "Not" - }, - { - "ty": 10, - "span": 1, - "mutability": "Mut" - }, - { - "ty": 5, - "span": 2, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 2, - "mutability": "Not" - }, - { - "ty": 12, - "span": 3, - "mutability": "Not" - } - ], - "arg_count": 4, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "argc", - "source_info": { - "span": 10, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 2 - }, - { - "name": "argv", - "source_info": { - "span": 11, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 3, - "projection": [] - } - }, - "argument_index": 3 - }, - { - "name": "sigpipe", - "source_info": { - "span": 12, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 4, - "projection": [] - } - }, - "argument_index": 4 - }, - { - "name": "v", - "source_info": { - "span": 6, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 13 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN14structs_tuples4main17hc13d6b1ad2ba5288E", - "mono_item_kind": { - "MonoItemFn": { - "name": "main", - "id": 6, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 1, - "projection": [] - }, + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h14ef065ef2b7c26fE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": [ { - "Aggregate": [ - { - "Adt": [ - 7, - 0, - [], - null, - null - ] - }, - [ - { - "Constant": { - "span": 52, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 10, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [] + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 }, - "align": 4, - "mutability": "Mut" - } - }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } + }, + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 15 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 + } + } + ], + "locals": [ + { "ty": 16, - "id": 10 - } + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, + "mutability": "Mut" } - }, - { - "Constant": { - "span": 53, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 }, - "ty": 26, - "id": 11 - } - } - }, - { - "Constant": { - "span": 54, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 36, - 64 - ], - "provenance": { - "ptrs": [] - }, - "align": 8, - "mutability": "Mut" - } + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } }, - "ty": 27, - "id": 12 - } + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 } - } - ] - ] + ], + "spread_arg": null, + "span": 3 } - ] - }, - "span": 55 - }, - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h9fd74af38a279f31E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ { - "Use": { - "Copy": { - "local": 1, - "projection": [ - { - "Field": [ - 2, - 27 - ] + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 23, + "id": 7 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 43 + } } - ] - } - } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 12, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + }, + { + "ty": 24, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ] - }, - "span": 56 - }, - { - "kind": { - "Assign": [ - { - "local": 2, - "projection": [] - }, + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN19struct_tuple_fields4main17he368ec089685e92cE", + "mono_item_kind": { + "MonoItemFn": { + "name": "main", + "id": 6, + "body": [ { - "Aggregate": [ - "Tuple", - [ - { - "Constant": { - "span": 57, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 11, - 0, - 0, - 0 - ], - "provenance": { - "ptrs": [] + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [], + null, + null + ] + }, + [ + { + "Constant": { + "span": 52, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 10, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 4, + "mutability": "Mut" + } + }, + "ty": 16, + "id": 10 + } + } + }, + { + "Constant": { + "span": 53, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 26, + "id": 11 + } + } + }, + { + "Constant": { + "span": 54, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 36, + 64 + ], + "provenance": { + "ptrs": [] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 27, + "id": 12 + } + } + } + ] + ] + } + ] + }, + "span": 55 }, - "align": 4, - "mutability": "Mut" - } - }, - "ty": 16, - "id": 13 - } - } - }, - { - "Constant": { - "span": 58, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 1 - ], - "provenance": { - "ptrs": [] + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 2, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 56 }, - "align": 1, - "mutability": "Mut" - } - }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Constant": { + "span": 57, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 11, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 4, + "mutability": "Mut" + } + }, + "ty": 16, + "id": 13 + } + } + }, + { + "Constant": { + "span": 58, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 1 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 26, + "id": 14 + } + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 60 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 61 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 2, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 62 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 50, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 25, + "id": 9 + } + } + }, + "args": [ + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 7, + "projection": [] + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 65 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 66 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 2, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 63, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 25, + "id": 9 + } + } + }, + "args": [ + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 64 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 68 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 69, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 70, + "mutability": "Not" + }, + { + "ty": 29, + "span": 71, + "mutability": "Not" + }, + { + "ty": 27, + "span": 56, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 51, + "mutability": "Not" + }, + { + "ty": 16, + "span": 60, + "mutability": "Mut" + }, + { "ty": 26, - "id": 14 - } + "span": 61, + "mutability": "Mut" + }, + { + "ty": 27, + "span": 62, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 64, + "mutability": "Not" + }, + { + "ty": 16, + "span": 65, + "mutability": "Mut" + }, + { + "ty": 26, + "span": 66, + "mutability": "Mut" + }, + { + "ty": 27, + "span": 67, + "mutability": "Mut" } - }, - { - "Move": { - "local": 3, - "projection": [] + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "s", + "source_info": { + "span": 70, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "t", + "source_info": { + "span": 71, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": null } - } - ] - ] + ], + "spread_arg": null, + "span": 72 } - ] - }, - "span": 59 - }, - { - "kind": { - "Assign": [ - { - "local": 5, - "projection": [] - }, + ] + } + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h29c5f28db416dd9bE", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 5, + "body": [ { - "Use": { - "Copy": { - "local": 1, - "projection": [ - { - "Field": [ - 0, - 16 - ] + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 46, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 8 + } + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } } - ] - } - } - } - ] - }, - "span": 60 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - { - "Field": [ - 1, - 26 - ] + ], + "locals": [ + { + "ty": 17, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 48, + "mutability": "Not" } - ] - } - } - } - ] - }, - "span": 61 - }, - { - "kind": { - "Assign": [ - { - "local": 7, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - { - "Field": [ - 2, - 27 - ] + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - ] - } - } - } - ] - }, - "span": 62 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 50, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 9 - } - } - }, - "args": [ - { - "Move": { - "local": 5, - "projection": [] - } - }, - { - "Move": { - "local": 6, - "projection": [] - } - }, - { - "Move": { - "local": 7, - "projection": [] - } + ], + "spread_arg": null, + "span": 49 } - ], - "destination": { - "local": 4, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 51 + ] } - }, - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 9, - "projection": [] - }, + }, + "details": null + }, + { + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hb280b8a231f5f9feE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": [ { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 16 - ] + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } } - ] - } - } - } - ] - }, - "span": 65 - }, - { - "kind": { - "Assign": [ - { - "local": 10, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 1, - 26 - ] + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" } - ] - } - } - } - ] - }, - "span": 66 - }, - { - "kind": { - "Assign": [ - { - "local": 11, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 2, - 27 - ] + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 } - ] - } - } - } - ] - }, - "span": 67 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 63, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 25, - "id": 9 - } - } - }, - "args": [ - { - "Move": { - "local": 9, - "projection": [] - } - }, - { - "Move": { - "local": 10, - "projection": [] - } - }, - { - "Move": { - "local": 11, - "projection": [] - } + ], + "spread_arg": null, + "span": 42 } - ], - "destination": { - "local": 8, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 64 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 68 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 69, - "mutability": "Mut" - }, - { - "ty": 28, - "span": 70, - "mutability": "Not" - }, - { - "ty": 29, - "span": 71, - "mutability": "Not" - }, - { - "ty": 27, - "span": 56, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 51, - "mutability": "Not" - }, - { - "ty": 16, - "span": 60, - "mutability": "Mut" - }, - { - "ty": 26, - "span": 61, - "mutability": "Mut" - }, - { - "ty": 27, - "span": 62, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 64, - "mutability": "Not" - }, - { - "ty": 16, - "span": 65, - "mutability": "Mut" - }, - { - "ty": 26, - "span": 66, - "mutability": "Mut" - }, - { - "ty": 27, - "span": 67, - "mutability": "Mut" - } - ], - "arg_count": 0, - "var_debug_info": [ - { - "name": "s", - "source_info": { - "span": 70, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "t", - "source_info": { - "span": 71, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": null - } - ], - "spread_arg": null, - "span": 72 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h59dd244d53c82a21E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::rt::lang_start::<()>::{closure#0}", - "id": 1, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "StorageLive": 2 - }, - "span": 16 - }, - { - "kind": { - "StorageLive": 3 - }, - "span": 15 - }, - { - "kind": { - "StorageLive": 4 - }, - "span": 17 - }, - { - "kind": { - "Assign": [ + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start17hb9b0e627f12f2913E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": [ { - "local": 4, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } + } + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 + } } - ] - } - } - } - ] - }, - "span": 17 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 14, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 13, - "id": 1 - } - } - }, - "args": [ - { - "Move": { - "local": 4, - "projection": [] - } - } - ], - "destination": { - "local": 3, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 15 - } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 4 - }, - "span": 19 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 18, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 14, - "id": 2 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, + { + "ty": 8, + "span": 11, + "mutability": "Not" + }, + { + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 16 + ] } - }, - { - "statements": [ - { - "kind": { - "StorageDead": 3 - }, - "span": 21 - }, - { - "kind": { - "StorageLive": 5 - }, - "span": 22 - }, - { - "kind": { - "Assign": [ + }, + "details": null + }, + { + "symbol_name": "_ZN19struct_tuple_fields3foo17h313cc5516683e5b2E", + "mono_item_kind": { + "MonoItemFn": { + "name": "foo", + "id": 8, + "body": [ { - "local": 5, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - "Shared", - { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 73 + } } - ] - } - ] - } - ] - }, - "span": 22 - }, - { - "kind": { - "StorageLive": 6 - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 6, - "projection": [] - }, - { - "Use": { - "Copy": { - "local": 2, - "projection": [ - { - "Field": [ - 0, - 15 - ] + ], + "locals": [ + { + "ty": 1, + "span": 74, + "mutability": "Mut" }, { - "Field": [ - 0, - 9 - ] + "ty": 16, + "span": 75, + "mutability": "Not" + }, + { + "ty": 26, + "span": 76, + "mutability": "Not" + }, + { + "ty": 27, + "span": 77, + "mutability": "Not" } - ] - } - } - } - ] - }, - "span": 23 - }, - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Cast": [ - "IntToInt", - { - "Move": { - "local": 6, - "projection": [] - } - }, - 16 - ] + ], + "arg_count": 3, + "var_debug_info": [ + { + "name": "_i", + "source_info": { + "span": 75, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "_b", + "source_info": { + "span": 76, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "_f", + "source_info": { + "span": 77, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + } + ], + "spread_arg": null, + "span": 78 } - ] - }, - "span": 24 - }, - { - "kind": { - "StorageDead": 6 - }, - "span": 25 - }, - { - "kind": { - "StorageDead": 5 - }, - "span": 26 - }, - { - "kind": { - "StorageDead": 2 - }, - "span": 27 - } - ], - "terminator": { - "kind": "Return", - "span": 20 - } - } - ], - "locals": [ - { - "ty": 16, - "span": 28, - "mutability": "Mut" - }, - { - "ty": 11, - "span": 3, - "mutability": "Mut" - }, - { - "ty": 17, - "span": 16, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 15, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 17, - "mutability": "Mut" - }, - { - "ty": 18, - "span": 22, - "mutability": "Mut" - }, - { - "ty": 9, - "span": 23, - "mutability": "Mut" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "main", - "source_info": { - "span": 9, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [ - "Deref", - { - "Field": [ - 0, - 7 - ] - } ] - } - }, - "argument_index": null - }, - { - "name": "self", - "source_info": { - "span": 29, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 2, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "self", - "source_info": { - "span": 30, - "scope": 2 - }, - "composite": null, - "value": { - "Place": { - "local": 5, - "projection": [] - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 3 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h093a95c952625c6cE", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::sys::backtrace::__rust_begin_short_backtrace::", - "id": 2, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 31, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 19, - "id": 3 - } - } - }, - "args": [ - { - "Move": { - "local": 1, - "projection": [] - } - }, - { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 33 } - }, - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 34, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 20, - "id": 5 - } - } - }, - "args": [ + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h3ea230cb4a81ac50E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 3, + "body": [ { - "Constant": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 43, + "mutability": "Mut" + }, + { + "ty": 22, + "span": 43, + "mutability": "Not" + }, + { + "ty": 1, + "span": 43, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 43 } - ], - "destination": { - "local": 2, - "projection": [] - }, - "target": 2, - "unwind": "Unreachable" - } - }, - "span": 35 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 36 + ] } - } - ], - "locals": [ - { - "ty": 1, - "span": 37, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 38, - "mutability": "Not" - }, - { - "ty": 1, - "span": 39, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "f", - "source_info": { - "span": 38, - "scope": 0 - }, - "composite": null, - "value": { - "Place": { - "local": 1, - "projection": [] - } - }, - "argument_index": 1 - }, - { - "name": "result", - "source_info": { - "span": 40, - "scope": 1 - }, - "composite": null, - "value": { - "Place": { - "local": 0, - "projection": [] - } - }, - "argument_index": null - }, - { - "name": "dummy", - "source_info": { - "span": 41, - "scope": 2 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 42 - } + }, + "details": null } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h7ec7f065d73fc35aE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 3, - "projection": [] - }, - { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } - ] - }, - "span": 43 - } - ], - "terminator": { - "kind": { - "Call": { - "func": { - "Constant": { - "span": 43, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 23, - "id": 7 - } - } - }, - "args": [ - { - "Move": { - "local": 3, - "projection": [] - } - }, - { - "Move": { - "local": 2, - "projection": [] - } - } - ], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": { - "Cleanup": 3 - } - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 43 - } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 + ], + "types": [ + [ + 6, + { + "RigidTy": { + "Int": "Isize" } - }, - { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 43 + } + ], + [ + 16, + { + "RigidTy": { + "Int": "I32" } - }, - { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 43 + } + ], + [ + 9, + { + "RigidTy": { + "Uint": "U8" } - } - ], - "locals": [ - { - "ty": 16, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 12, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - }, - { - "ty": 24, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h5da2e9c3f6fcbd9eE", - "mono_item_kind": { - "MonoItemFn": { - "name": ">::call_once", - "id": 3, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 43 + } + ], + [ + 2, + { + "RigidTy": { + "Int": "I8" } - }, - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 43 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 43, - "mutability": "Mut" - }, - { - "ty": 7, - "span": 43, - "mutability": "Not" - }, - { - "ty": 1, - "span": 43, - "mutability": "Not" - } - ], - "arg_count": 2, - "var_debug_info": [], - "spread_arg": 2, - "span": 43 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17ha01f56bbeee4ceecE", - "mono_item_kind": { - "MonoItemFn": { - "name": "<() as std::process::Termination>::report", - "id": 5, - "body": { - "blocks": [ - { - "statements": [ - { - "kind": { - "Assign": [ - { - "local": 0, - "projection": [] - }, - { - "Use": { - "Constant": { - "span": 46, - "user_ty": null, - "const_": { - "kind": { - "Allocated": { - "bytes": [ - 0 - ], - "provenance": { - "ptrs": [] - }, - "align": 1, - "mutability": "Mut" - } - }, - "ty": 17, - "id": 8 - } - } - } - } - ] - }, - "span": 46 - } - ], - "terminator": { - "kind": "Return", - "span": 45 + } + ], + [ + 26, + { + "RigidTy": "Bool" + } + ], + [ + 27, + { + "RigidTy": { + "Float": "F64" } - } - ], - "locals": [ - { - "ty": 17, - "span": 47, - "mutability": "Mut" - }, - { - "ty": 1, - "span": 48, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [ - { - "name": "self", - "source_info": { - "span": 48, - "scope": 0 - }, - "composite": null, - "value": { - "Const": { - "span": 32, - "user_ty": null, - "const_": { - "kind": "ZeroSized", - "ty": 1, - "id": 4 - } - } - }, - "argument_index": 1 - } - ], - "spread_arg": null, - "span": 49 - } - } - }, - "details": null - }, - { - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hcc7804faa37550b8E", - "mono_item_kind": { - "MonoItemFn": { - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", - "id": 4, - "body": { - "blocks": [ - { - "statements": [], - "terminator": { - "kind": "Return", - "span": 44 - } - } - ], - "locals": [ - { - "ty": 1, - "span": 44, - "mutability": "Mut" - }, - { - "ty": 22, - "span": 44, - "mutability": "Not" - } - ], - "arg_count": 1, - "var_debug_info": [], - "spread_arg": null, - "span": 44 - } - } - }, - "details": null - } - ], - "types": [ - [ - 16, - { - "RigidTy": { - "Int": "I32" - } - } - ], - [ - 9, - { - "RigidTy": { - "Uint": "U8" - } - } + } + ] ], - [ - 27, - { - "RigidTy": { - "Float": "F64" - } - } - ], - [ - 26, - { - "RigidTy": "Bool" - } - ], - [ - 6, - { - "RigidTy": { - "Int": "Isize" - } - } - ], - [ - 2, - { - "RigidTy": { - "Int": "I8" - } - } - ] - ], - "debug": null -} + "debug": null +} \ No newline at end of file diff --git a/kmir/src/tests/integration/data/proving/unchecked-add-spec.k b/kmir/src/tests/integration/data/proving/unchecked-add-spec.k deleted file mode 100644 index f77039109..000000000 --- a/kmir/src/tests/integration/data/proving/unchecked-add-spec.k +++ /dev/null @@ -1,75 +0,0 @@ -module UNCHECKED-ADD-SPEC - imports KMIR - - claim [unchecked-ADD-spec]: - - ( // LHS, start state - #execTerminator ( - terminator (... - kind: terminatorKindCall (... - func: operandConstant ( - constOperand (... - span: span ( 76 ) , - userTy: noUserTypeAnnotationIndex , - const: mirConst (... - kind: constantKindZeroSized , - ty: ty ( 32 ) , // <- this is the reference to `unchecked_op` - id: mirConstId ( 12 ) - ) - ) - ) , - args: - operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) - operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ), - destination: DEST, - target: noBasicBlockIdx, - // forcing the proof to stop because there is no caller to return to - unwind: _ - ), - span: _ - ) - ) - => - // RHS: target - // #execTerminator ( terminator (... kind: terminatorKindReturn , span: ?_ ) ) - #EndProgram - ) - ~> .K - - _ - _ => ty ( 32 ) - - _ => ?_ - _ => ?_ - _ => DEST - _ => noBasicBlockIdx - _ => ?_ - - ListItem ( _ ) - ListItem ( typedValue ( Integer ( A , 16 , true ) , ty ( 23 ) , _ ) ) - ListItem ( typedValue ( Integer ( B , 16 , true ) , ty ( 23 ) , _ ) ) - // _ // if we keep this we need a lemma for list size predicate simplification - => - ListItem ( typedValue ( Integer ( ?RESULT, 16, true), ty ( 23 ) , ?_ )) - ?_ - - - _ => ?_ - - ( - ty ( 32 ) |-> monoItemFn (... name: symbol ( "unchecked_op" ) , id: defId ( 9 ) , body: someBody (body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 93 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 34 ) , id: mirConstId ( 19 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 94 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 95 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 23 ) , span: span ( 96 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 23 ) , span: span ( 97 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 23 ) , span: span ( 98 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 97 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 98 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "unchecked_sum" ) , sourceInfo: sourceInfo (... span: span ( 99 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 0 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 100 ) ) ) ) - ty ( 34 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_add" ) , id: defId ( 3 ) , body: someBody (body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 3 ) ) , span: span ( 43 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueNullaryOp ( nullOpUbChecks , ty ( 21 ) ) ) , span: span ( 44 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 43 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 45 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 22 ) , id: mirConstId ( 6 ) ) ) ) , args: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 4 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionUnreachable ) , span: span ( 46 ) ) ) basicBlock (... statements: statement (... kind: statementKindStorageDead ( local ( 3 ) ) , span: span ( 48 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpAddUnchecked , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 49 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 47 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 23 ) , span: span ( 50 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 23 ) , span: span ( 51 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 23 ) , span: span ( 52 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 43 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 1 ) , span: span ( 46 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 51 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 52 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 53 ) ) ) ) - ty ( 22 ) |-> monoItemFn (... name: symbol ( "core::num::::unchecked_add::precondition_check" ) , id: defId ( 4 ) , body: someBody (body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 4 ) ) , span: span ( 55 ) ) statement (... kind: statementKindStorageLive ( local ( 6 ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueCheckedBinaryOp ( binOpAdd , operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 23 ) ) .ProjectionElems ) ) ) ) , span: span ( 57 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 6 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 21 ) ) .ProjectionElems ) ) ) ) , span: span ( 58 ) ) statement (... kind: statementKindStorageDead ( local ( 6 ) ) , span: span ( 59 ) ) statement (... kind: statementKindStorageDead ( local ( 4 ) ) , span: span ( 55 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 54 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 60 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 24 ) , id: mirConstId ( 7 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 61 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... provSize: 0 , allocId: allocId ( 0 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 8 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionUnreachable ) , span: span ( 62 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 63 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 64 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 23 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 23 ) , span: span ( 65 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 26 ) , span: span ( 62 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 23 ) , span: span ( 57 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 21 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 27 ) , span: span ( 56 ) , mut: mutabilityMut ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "lhs" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 65 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 66 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "rhs" ) , sourceInfo: sourceInfo (... span: span ( 67 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "a" ) , sourceInfo: sourceInfo (... span: span ( 57 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "b" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 68 ) ) ) ) - ) - - - requires // i16 invariants - 0 -Int (1 < None: +def test_prove(test_data: tuple[str, Path], tmp_path: Path, kmir: KMIR) -> None: testname, smir_json = test_data spec_file = tmp_path / f'{testname}.k' gen_opts = GenSpecOpts(smir_json, spec_file, 'main') @@ -365,23 +364,3 @@ def test_prove_termination(test_data: tuple[str, Path], tmp_path: Path, kmir: KM for label in claim_labels: proof = Proof.read_proof_data(proof_dir, label) 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 = ProveRunOpts(spec, proof_dir, None, None) - _kmir_prove_run(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 diff --git a/package/version b/package/version index 0793ec760..b73ea9581 100644 --- a/package/version +++ b/package/version @@ -1 +1 @@ -0.3.107 +0.3.103 From bcd56d9079816912c968047e4e9ab552565f33fa Mon Sep 17 00:00:00 2001 From: devops Date: Thu, 27 Mar 2025 18:13:29 +0000 Subject: [PATCH 2/2] Set Version: 0.3.108 --- kmir/pyproject.toml | 2 +- kmir/src/kmir/__init__.py | 2 +- package/version | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kmir/pyproject.toml b/kmir/pyproject.toml index 7e487ea32..dcc4cafaf 100644 --- a/kmir/pyproject.toml +++ b/kmir/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "kmir" -version = "0.3.103" +version = "0.3.108" description = "" authors = [ "Runtime Verification, Inc. ", diff --git a/kmir/src/kmir/__init__.py b/kmir/src/kmir/__init__.py index cfdb78e48..f47ac201c 100644 --- a/kmir/src/kmir/__init__.py +++ b/kmir/src/kmir/__init__.py @@ -1,3 +1,3 @@ from typing import Final -VERSION: Final = '0.3.103' +VERSION: Final = '0.3.108' diff --git a/package/version b/package/version index b73ea9581..c2f74cb52 100644 --- a/package/version +++ b/package/version @@ -1 +1 @@ -0.3.103 +0.3.108