From ed8a273a0a3ab32a7f0eaafb53fddfafeb0d7e89 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Tue, 12 Nov 2024 17:30:26 +1100 Subject: [PATCH 01/12] Set up a basic CI build --- .github/workflows/test.yml | 49 ++++++++++++++++++++++++++++++++++++++ Makefile | 4 ++++ 2 files changed, 53 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..d0fc7b9 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,49 @@ +name: 'Test' +on: + pull_request: + branches: [ $default-branch ] + workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + + integration-tests: + name: "Integration tests" + runs-on: [self-hosted, linux, normal] + steps: + - name: 'Check out code' + uses: actions/checkout@v4 + with: + token: ${{ secrets.JENKINS_GITHUB_PAT }} + submodules: recursive + + - name: "Set up nightly Rust" # https://github.com/rust-lang/rustup/issues/3409 + uses: dtolnay/rust-toolchain@master + with: + toolchain: nightly-2024-08-28 + + - name: 'Set up tree for rust dependency' + run: make setup + + - name: 'Cache smir_pretty and rustc' + uses: Swatinem/rust-cache@v2 + with: + workspaces: | + . + deps/rust/src + cache-directories: | + target + deps/rust/src/build + deps/rust/src/target + + - name: 'Build smir_pretty and its rustc dependency' + run: | # rustc bootstrap checks this and refuses stage 1 in "CI" + export GITHUB_ACTIONS="in denial" && \ + echo "GITHUB_ACTIONS = ${GITHUB_ACTIONS}" && \ + make build_all + + - name: 'Run smir integration tests' + run: | + make integration-test diff --git a/Makefile b/Makefile index 53903ca..44c6e76 100644 --- a/Makefile +++ b/Makefile @@ -84,3 +84,7 @@ generate_ui_tests: cd "${RUST_SRC}"; ./get_runpass.sh tests/ui > "${RUST_DIR}"/tests_ui_sources -cd "${RUST_SRC}"; ./ui_compiletest.sh "${RUST_SRC}" "${RUST_DIR}"/tests/ui/upstream "${RUST_DIR}"/tests_ui_sources --pass check --force-rerun 2>&1 > "${RUST_DIR}"/tests_ui_upstream.log -cd "${RUST_SRC}"; RUST_BIN="${PWD}"/run.sh ./ui_compiletest.sh "${RUST_SRC}" "${RUST_DIR}"/tests/ui/smir "${RUST_DIR}"/tests_ui_sources --pass check --force-rerun 2>&1 > "${RUST_DIR}"/tests_ui_smir.log + +.PHONY: integration-test +integration-test: + @echo "Implement me!" From ff95f6aacb189fccbccc99aa1fb015dfac2a84d8 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Wed, 13 Nov 2024 09:49:34 +1100 Subject: [PATCH 02/12] use master as default branch --- .github/workflows/test.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d0fc7b9..df595a7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,12 +1,17 @@ name: 'Test' on: pull_request: - branches: [ $default-branch ] + branches: [ "master" ] + push: + branches: [ "master" ] workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +env: + CARGO_TERM_COLOR: always + jobs: integration-tests: From 4caa73b08c57c914cee184a88a04d96d49f11b55 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Wed, 13 Nov 2024 11:35:34 +1100 Subject: [PATCH 03/12] no token at checkout (no need, and not supplied by the CI gods) --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index df595a7..4fa71b9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,7 +21,8 @@ jobs: - name: 'Check out code' uses: actions/checkout@v4 with: - token: ${{ secrets.JENKINS_GITHUB_PAT }} + # Check out pull request HEAD instead of merge commit. + ref: ${{ github.event.pull_request.head.sha }} submodules: recursive - name: "Set up nightly Rust" # https://github.com/rust-lang/rustup/issues/3409 From 471fd72bd9ce534c621824e95f3ccf0cf699b262 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Wed, 13 Nov 2024 16:16:22 +1100 Subject: [PATCH 04/12] Add integration test directory and move panic_example there, normalise json output to compare --- Makefile | 28 +- panic_example.rs | 4 +- panic_example.smir.json | 2 +- tests/integration/normalise-filter.jq | 18 + tests/integration/programs/panic_example.rs | 3 + .../programs/panic_example.smir.json.expected | 12772 ++++++++++++++++ 6 files changed, 12821 insertions(+), 6 deletions(-) mode change 100644 => 120000 panic_example.rs mode change 100644 => 120000 panic_example.smir.json create mode 100644 tests/integration/normalise-filter.jq create mode 100644 tests/integration/programs/panic_example.rs create mode 100644 tests/integration/programs/panic_example.smir.json.expected diff --git a/Makefile b/Makefile index 44c6e76..65ced1a 100644 --- a/Makefile +++ b/Makefile @@ -85,6 +85,30 @@ generate_ui_tests: -cd "${RUST_SRC}"; ./ui_compiletest.sh "${RUST_SRC}" "${RUST_DIR}"/tests/ui/upstream "${RUST_DIR}"/tests_ui_sources --pass check --force-rerun 2>&1 > "${RUST_DIR}"/tests_ui_upstream.log -cd "${RUST_SRC}"; RUST_BIN="${PWD}"/run.sh ./ui_compiletest.sh "${RUST_SRC}" "${RUST_DIR}"/tests/ui/smir "${RUST_DIR}"/tests_ui_sources --pass check --force-rerun 2>&1 > "${RUST_DIR}"/tests_ui_smir.log +TESTDIR=$(CURDIR)/tests/integration/programs + .PHONY: integration-test -integration-test: - @echo "Implement me!" +integration-test: TESTS ?= $(shell find $(TESTDIR) -type f -name "*.rs") +integration-test: SMIR ?= $(CURDIR)/run.sh -Z no-codegen +# override this to tweak how expectations are formatted +integration-test: NORMALIZE ?= jq -S -e -f $(TESTDIR)/../normalise-filter.jq +# override this to re-make golden files +integration-test: DIFF ?= | diff - +integration-test: build + errors=""; \ + report() { echo "$$1: $$2"; errors="$$errors\n$$1: $$2"; }; \ + for rust in ${TESTS}; do \ + target=$${rust%.rs}.smir.json; \ + dir=$$(dirname $${rust}); \ + echo "$$rust"; \ + ${SMIR} --out-dir $${dir} $${rust} || report "$$rust" "Conversion failed"; \ + [ -f $${target} ] \ + && ${NORMALIZE} $${target} ${DIFF} $${target}.expected \ + && rm $${target} \ + || report "$$rust" "Unexpected json output"; \ + done; \ + [ -z "$$errors" ] || (echo "===============\nFAILING TESTS:$$errors"; exit 1) + + +golden: + make integration-test DIFF=">" diff --git a/panic_example.rs b/panic_example.rs deleted file mode 100644 index c307e16..0000000 --- a/panic_example.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - panic!() -} \ No newline at end of file diff --git a/panic_example.rs b/panic_example.rs new file mode 120000 index 0000000..aeac1bb --- /dev/null +++ b/panic_example.rs @@ -0,0 +1 @@ +tests/integration/programs/panic_example.rs \ No newline at end of file diff --git a/panic_example.smir.json b/panic_example.smir.json deleted file mode 100644 index 9ae1248..0000000 --- a/panic_example.smir.json +++ /dev/null @@ -1 +0,0 @@ -{"name": "panic_example", "crate_id": 3804531016856674905, "allocs": [[0,{"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,112,116,114,58,58,114,101,97,100,95,118,111,108,97,116,105,108,101,32,114,101,113,117,105,114,101,115,32,116,104,97,116,32,116,104,101,32,112,111,105,110,116,101,114,32,97,114,103,117,109,101,110,116,32,105,115,32,97,108,105,103,110,101,100,32,97,110,100,32,110,111,110,45,110,117,108,108],"provenance":{"ptrs":[]},"align":1,"mutability":"Not"}}],[1,{"Memory":{"bytes":[0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0],"provenance":{"ptrs":[[0,12]]},"align":8,"mutability":"Not"}}],[2,{"Memory":{"bytes":[],"provenance":{"ptrs":[]},"align":8,"mutability":"Not"}}],[3,{"Memory":{"bytes":[0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0],"provenance":{"ptrs":[[0,13]]},"align":8,"mutability":"Not"}}],[4,{"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,78,111,110,78,117,108,108,58,58,110,101,119,95,117,110,99,104,101,99,107,101,100,32,114,101,113,117,105,114,101,115,32,116,104,97,116,32,116,104,101,32,112,111,105,110,116,101,114,32,105,115,32,110,111,110,45,110,117,108,108],"provenance":{"ptrs":[]},"align":1,"mutability":"Not"}}],[5,{"Memory":{"bytes":[],"provenance":{"ptrs":[]},"align":1,"mutability":"Not"}}],[6,{"Memory":{"bytes":[],"provenance":{"ptrs":[]},"align":1,"mutability":"Not"}}],[7,{"Static":100}],[8,{"Memory":{"bytes":[101,120,112,108,105,99,105,116,32,112,97,110,105,99],"provenance":{"ptrs":[]},"align":1,"mutability":"Not"}}],[12,{"Memory":{"bytes":[105,115,95,97,108,105,103,110,101,100,95,116,111,58,32,97,108,105,103,110,32,105,115,32,110,111,116,32,97,32,112,111,119,101,114,45,111,102,45,116,119,111],"provenance":{"ptrs":[]},"align":1,"mutability":"Not"}}],[13,{"Memory":{"bytes":[105,115,95,97,108,105,103,110,101,100,95,116,111,58,32,97,108,105,103,110,32,105,115,32,110,111,116,32,97,32,112,111,119,101,114,45,111,102,45,116,119,111],"provenance":{"ptrs":[]},"align":1,"mutability":"Not"}}]], "functions": [[7,{"NormalSym":"_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E"}],[80,{"NormalSym":"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h180abd43edd08785E"}],[20,{"NormalSym":"_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h163f76a593f9a61dE"}],[36,{"NormalSym":"_ZN3std9panicking20rust_panic_with_hook17he6fc28793b894d73E"}],[101,{"NormalSym":"_ZN5alloc5boxed12Box$LT$T$GT$3new17hfb7bad2afdef8431E"}],[112,{"NormalSym":"_ZN3std9panicking11begin_panic17h046658c3c0b9185bE"}],[114,{"NoOpSym":""}],[76,{"IntrinsicSym":"volatile_load"}],[115,{"NoOpSym":""}],[63,{"NormalSym":"_ZN5alloc5alloc6Global10alloc_impl17hfeb4b7829cd89493E"}],[42,{"NormalSym":"_ZN4core3ops8function6FnOnce9call_once17h86e2963be1a2fd6aE"}],[66,{"NormalSym":"_ZN5alloc5alloc18handle_alloc_error17h367988acd01d106aE"}],[78,{"NormalSym":"__rust_alloc_zeroed"}],[0,{"IntrinsicSym":"type_id"}],[50,{"NormalSym":"_ZN4core9panicking9panic_fmt17h8510a50a874ddcc2E"}],[93,{"NormalSym":"_ZN3std7process5abort17h4d7b628a2864edb7E"}],[75,{"NormalSym":"_ZN4core3ptr13read_volatile18precondition_check17hc773488a477a662fE"}],[29,{"NormalSym":"_ZN4core3ops8function6FnOnce9call_once17h11ec6afa27e3d406E"}],[30,{"IntrinsicSym":"caller_location"}],[113,{"NormalSym":"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h6e8cf99dfda5fdefE"}],[79,{"NormalSym":"_ZN5alloc5alloc5alloc17h214157fcd92df279E"}],[49,{"IntrinsicSym":"ctpop"}],[48,{"NormalSym":"_ZN4core9panicking14panic_nounwind17hee6445121510e179E"}],[116,{"NoOpSym":""}],[31,{"NormalSym":"_ZN3std3sys9backtrace26__rust_end_short_backtrace17h4bae7cc86322177bE"}],[88,{"NormalSym":"_ZN5alloc5alloc15exchange_malloc17h5443007c4b77064aE"}],[96,{"NormalSym":"_ZN4core3fmt9Formatter9write_str17hd334b351ded225feE"}],[26,{"IntrinsicSym":"black_box"}],[73,{"NormalSym":"__rust_alloc"}],[94,{"NormalSym":"_ZN3std9panicking14payload_as_str17h5ede2995a2a0c693E"}]], "items": [{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":1,"projection":[]}},{"Constant":{"const_":{"id":6,"kind":"ZeroSized","ty":8},"span":50,"user_ty":null}}],"destination":{"local":0,"projection":[]},"func":{"Constant":{"const_":{"id":5,"kind":"ZeroSized","ty":25},"span":49,"user_ty":null}},"target":1,"unwind":"Continue"}},"span":51}},{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Constant":{"const_":{"id":6,"kind":"ZeroSized","ty":8},"span":50,"user_ty":null}}],"destination":{"local":2,"projection":[]},"func":{"Constant":{"const_":{"id":7,"kind":"ZeroSized","ty":26},"span":52,"user_ty":null}},"target":2,"unwind":"Unreachable"}},"span":53}},{"statements":[],"terminator":{"kind":"Return","span":54}}],"locals":[{"mutability":"Mut","span":55,"ty":27},{"mutability":"Not","span":56,"ty":28},{"mutability":"Not","span":57,"ty":8}],"span":60,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"f","source_info":{"scope":0,"span":56},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":null,"composite":null,"name":"result","source_info":{"scope":1,"span":58},"value":{"Place":{"local":0,"projection":[]}}},{"argument_index":1,"composite":null,"name":"dummy","source_info":{"scope":2,"span":59},"value":{"Const":{"const_":{"id":6,"kind":"ZeroSized","ty":8},"span":50,"user_ty":null}}}]}],"id":4,"name":"std::sys::backtrace::__rust_end_short_backtrace::<{closure@std::rt::begin_panic<&str>::{closure#0}}, !>"}},"symbol_name":"_ZN3std3sys9backtrace26__rust_end_short_backtrace17h4bae7cc86322177bE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":2},{"kind":{"StorageLive":3},"span":2},{"kind":{"StorageLive":5},"span":2}],"terminator":{"kind":{"Call":{"args":[],"destination":{"local":2,"projection":[]},"func":{"Constant":{"const_":{"id":0,"kind":"ZeroSized","ty":0},"span":0,"user_ty":null}},"target":1,"unwind":"Unreachable"}},"span":1}},{"statements":[{"kind":{"StorageLive":4},"span":4},{"kind":{"Assign":[{"local":4,"projection":[]},{"BinaryOp":["Shr",{"Copy":{"local":2,"projection":[]}},{"Constant":{"const_":{"id":1,"kind":{"Allocated":{"align":4,"bytes":[64,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":1},"span":5,"user_ty":null}}]}]},"span":4},{"kind":{"Assign":[{"local":3,"projection":[]},{"Cast":["IntToInt",{"Move":{"local":4,"projection":[]}},2]}]},"span":6},{"kind":{"StorageDead":4},"span":7},{"kind":{"Assign":[{"local":5,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":2,"projection":[]}},2]}]},"span":8},{"kind":{"StorageLive":6},"span":9},{"kind":{"Assign":[{"local":6,"projection":[]},{"Aggregate":["Tuple",[{"Copy":{"local":3,"projection":[]}},{"Copy":{"local":5,"projection":[]}}]]}]},"span":9},{"kind":{"Assign":[{"local":0,"projection":[]},{"Aggregate":[{"Adt":[1,0,[],null,null]},[{"Move":{"local":6,"projection":[]}}]]}]},"span":10},{"kind":{"StorageDead":6},"span":11},{"kind":{"StorageDead":5},"span":2},{"kind":{"StorageDead":3},"span":2},{"kind":{"StorageDead":2},"span":2}],"terminator":{"kind":"Return","span":3}}],"locals":[{"mutability":"Mut","span":12,"ty":3},{"mutability":"Not","span":13,"ty":4},{"mutability":"Not","span":14,"ty":5},{"mutability":"Not","span":15,"ty":2},{"mutability":"Mut","span":4,"ty":5},{"mutability":"Not","span":16,"ty":2},{"mutability":"Mut","span":9,"ty":6}],"span":17,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":0,"span":13},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":null,"composite":null,"name":"t","source_info":{"scope":2,"span":14},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":null,"composite":null,"name":"t1","source_info":{"scope":3,"span":15},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":null,"composite":null,"name":"t2","source_info":{"scope":4,"span":16},"value":{"Place":{"local":5,"projection":[]}}}]}],"id":0,"name":"<&str as std::any::Any>::type_id"}},"symbol_name":"_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h5fbaa8559e09a241E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":0,"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Constant":{"const_":{"id":54,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,8]]}}},"ty":32},"span":418,"user_ty":null}}],"destination":{"local":1,"projection":[]},"func":{"Constant":{"const_":{"id":53,"kind":"ZeroSized","ty":112},"span":417,"user_ty":null}},"target":null,"unwind":"Continue"}},"span":419}}],"locals":[{"mutability":"Mut","span":420,"ty":8},{"mutability":"Mut","span":419,"ty":27}],"span":421,"spread_arg":null,"var_debug_info":[]}],"id":31,"name":"main"}},"symbol_name":"_ZN13panic_example4main17h1a3a8ec0839c9696E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":35},{"kind":{"StorageLive":3},"span":34},{"kind":{"StorageLive":4},"span":36},{"kind":{"Assign":[{"local":4,"projection":[]},{"Use":{"Copy":{"local":1,"projection":["Deref",{"Field":[0,14]}]}}}]},"span":36}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":4,"projection":[]}}],"destination":{"local":3,"projection":[]},"func":{"Constant":{"const_":{"id":3,"kind":"ZeroSized","ty":20},"span":33,"user_ty":null}},"target":1,"unwind":"Continue"}},"span":34}},{"statements":[{"kind":{"StorageDead":4},"span":38}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":3,"projection":[]}}],"destination":{"local":2,"projection":[]},"func":{"Constant":{"const_":{"id":4,"kind":"ZeroSized","ty":21},"span":37,"user_ty":null}},"target":2,"unwind":"Continue"}},"span":35}},{"statements":[{"kind":{"StorageDead":3},"span":40},{"kind":{"StorageLive":5},"span":41},{"kind":{"Assign":[{"local":5,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":2,"projection":[{"Field":[0,22]}]}]}]},"span":41},{"kind":{"StorageLive":6},"span":42},{"kind":{"Assign":[{"local":6,"projection":[]},{"Use":{"Copy":{"local":2,"projection":[{"Field":[0,22]},{"Field":[0,16]}]}}}]},"span":42},{"kind":{"Assign":[{"local":0,"projection":[]},{"Cast":["IntToInt",{"Move":{"local":6,"projection":[]}},1]}]},"span":43},{"kind":{"StorageDead":6},"span":44},{"kind":{"StorageDead":5},"span":45},{"kind":{"StorageDead":2},"span":22}],"terminator":{"kind":"Return","span":39}}],"locals":[{"mutability":"Mut","span":46,"ty":1},{"mutability":"Mut","span":21,"ty":18},{"mutability":"Mut","span":35,"ty":23},{"mutability":"Mut","span":34,"ty":8},{"mutability":"Mut","span":36,"ty":14},{"mutability":"Mut","span":41,"ty":24},{"mutability":"Mut","span":42,"ty":16}],"span":21,"spread_arg":null,"var_debug_info":[{"argument_index":null,"composite":null,"name":"main","source_info":{"scope":0,"span":28},"value":{"Place":{"local":1,"projection":["Deref",{"Field":[0,14]}]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":1,"span":47},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":2,"span":48},"value":{"Place":{"local":5,"projection":[]}}}]}],"id":3,"name":"std::rt::lang_start::<()>::{closure#0}"}},"symbol_name":"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hc407815e8e27866fE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":2,"blocks":[{"statements":[{"kind":{"StorageLive":8},"span":167},{"kind":{"Assign":[{"local":8,"projection":[]},{"Cast":["Transmute",{"Copy":{"local":2,"projection":[]}},65]}]},"span":168},{"kind":{"Assign":[{"local":3,"projection":[]},{"Aggregate":[{"Adt":[19,0,[],null,null]},[{"Copy":{"local":1,"projection":[]}},{"Move":{"local":8,"projection":[]}}]]}]},"span":169},{"kind":{"StorageDead":8},"span":170},{"kind":{"StorageLive":4},"span":171}],"terminator":{"kind":{"Call":{"args":[{"Constant":{"const_":{"id":30,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,5]]}}},"ty":64},"span":50,"user_ty":null}},{"Copy":{"local":3,"projection":[]}},{"Constant":{"const_":{"id":13,"kind":{"Allocated":{"align":1,"bytes":[0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":37},"span":165,"user_ty":null}}],"destination":{"local":4,"projection":[]},"func":{"Constant":{"const_":{"id":29,"kind":"ZeroSized","ty":63},"span":164,"user_ty":null}},"target":4,"unwind":"Continue"}},"span":166}},{"statements":[],"terminator":{"kind":"Unreachable","span":171}},{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":3,"projection":[]}}],"destination":{"local":7,"projection":[]},"func":{"Constant":{"const_":{"id":31,"kind":"ZeroSized","ty":66},"span":172,"user_ty":null}},"target":null,"unwind":"Continue"}},"span":173}},{"statements":[{"kind":{"Assign":[{"local":6,"projection":[]},{"Use":{"Copy":{"local":4,"projection":[{"Downcast":0},{"Field":[0,67]}]}}}]},"span":175},{"kind":{"StorageLive":10},"span":176},{"kind":{"StorageLive":11},"span":176},{"kind":{"StorageLive":9},"span":177},{"kind":{"Assign":[{"local":11,"projection":[]},{"Use":{"Copy":{"local":6,"projection":[{"Field":[0,68]}]}}}]},"span":178},{"kind":{"Assign":[{"local":10,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":11,"projection":[]}},46]}]},"span":179},{"kind":{"Assign":[{"local":9,"projection":[]},{"Aggregate":[{"Adt":[20,0,[{"Type":16}],null,null]},[{"Copy":{"local":10,"projection":[]}}]]}]},"span":180},{"kind":{"Assign":[{"local":0,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":11,"projection":[]}},61]}]},"span":181},{"kind":{"StorageDead":9},"span":182},{"kind":{"StorageDead":11},"span":176},{"kind":{"StorageDead":10},"span":176},{"kind":{"StorageDead":4},"span":183}],"terminator":{"kind":"Return","span":174}},{"statements":[{"kind":{"Assign":[{"local":5,"projection":[]},{"Discriminant":{"local":4,"projection":[]}}]},"span":171}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":5,"projection":[]}},"targets":{"branches":[[0,3],[1,2]],"otherwise":1}}},"span":184}}],"locals":[{"mutability":"Mut","span":185,"ty":61},{"mutability":"Not","span":186,"ty":47},{"mutability":"Not","span":187,"ty":47},{"mutability":"Not","span":188,"ty":69},{"mutability":"Mut","span":171,"ty":70},{"mutability":"Mut","span":189,"ty":13},{"mutability":"Not","span":175,"ty":67},{"mutability":"Mut","span":173,"ty":27},{"mutability":"Mut","span":167,"ty":65},{"mutability":"Mut","span":177,"ty":71},{"mutability":"Mut","span":179,"ty":46},{"mutability":"Mut","span":178,"ty":68}],"span":200,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"size","source_info":{"scope":0,"span":186},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"align","source_info":{"scope":0,"span":187},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":null,"composite":null,"name":"layout","source_info":{"scope":1,"span":188},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":null,"composite":null,"name":"ptr","source_info":{"scope":2,"span":175},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":1,"composite":null,"name":"size","source_info":{"scope":3,"span":190},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"align","source_info":{"scope":3,"span":191},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"align","source_info":{"scope":4,"span":192},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":5,"span":193},"value":{"Const":{"const_":{"id":32,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,6]]}}},"ty":64},"span":194,"user_ty":null}}},{"argument_index":2,"composite":null,"name":"layout","source_info":{"scope":5,"span":195},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":6,"span":196},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":7,"span":197},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":8,"span":198},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":9,"span":199},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":10,"span":199},"value":{"Place":{"local":9,"projection":[]}}}]},{"arg_count":0,"blocks":[{"statements":[{"kind":{"Assign":[{"local":1,"projection":[]},{"Aggregate":[{"Adt":[21,0,[],null,null]},[]]}]},"span":194},{"kind":{"Assign":[{"local":0,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":1,"projection":[]}]}]},"span":194}],"terminator":{"kind":"Return","span":194}}],"locals":[{"mutability":"Mut","span":194,"ty":64},{"mutability":"Mut","span":194,"ty":72}],"span":194,"spread_arg":null,"var_debug_info":[]}],"id":18,"name":"alloc::alloc::exchange_malloc"}},"symbol_name":"_ZN5alloc5alloc15exchange_malloc17h5443007c4b77064aE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"Assign":[{"local":2,"projection":[]},{"Discriminant":{"local":1,"projection":["Deref",{"Field":[0,41]}]}}]},"span":362}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":2,"projection":[]}},"targets":{"branches":[[0,2],[1,3]],"otherwise":1}}},"span":361}},{"statements":[],"terminator":{"kind":"Unreachable","span":362}},{"statements":[],"terminator":{"kind":{"Call":{"args":[],"destination":{"local":5,"projection":[]},"func":{"Constant":{"const_":{"id":48,"kind":"ZeroSized","ty":93},"span":363,"user_ty":null}},"target":null,"unwind":"Continue"}},"span":364}},{"statements":[{"kind":{"StorageLive":3},"span":366},{"kind":{"Assign":[{"local":3,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":1,"projection":["Deref",{"Field":[0,41]},{"Downcast":1},{"Field":[0,32]}]}]}]},"span":366},{"kind":{"StorageLive":4},"span":367},{"kind":{"Assign":[{"local":4,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":1,"projection":["Deref",{"Field":[0,41]},{"Downcast":1},{"Field":[0,32]}]}]}]},"span":367},{"kind":{"Assign":[{"local":0,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Move":{"local":4,"projection":[]}},100]}]},"span":367},{"kind":{"StorageDead":4},"span":367},{"kind":{"StorageDead":3},"span":367}],"terminator":{"kind":"Return","span":365}}],"locals":[{"mutability":"Mut","span":368,"ty":100},{"mutability":"Not","span":369,"ty":39},{"mutability":"Mut","span":370,"ty":13},{"mutability":"Not","span":366,"ty":4},{"mutability":"Mut","span":367,"ty":4},{"mutability":"Mut","span":364,"ty":27}],"span":371,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":0,"span":369},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":null,"composite":null,"name":"a","source_info":{"scope":1,"span":366},"value":{"Place":{"local":3,"projection":[]}}}]}],"id":28,"name":" as core::panic::PanicPayload>::get"}},"symbol_name":"_ZN91_$LT$std..panicking..begin_panic..Payload$LT$A$GT$$u20$as$u20$core..panic..PanicPayload$GT$3get17h7e5b46332dff10e9E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":1,"projection":[]}},{"Constant":{"const_":{"id":6,"kind":"ZeroSized","ty":8},"span":50,"user_ty":null}}],"destination":{"local":0,"projection":[]},"func":{"Constant":{"const_":{"id":8,"kind":"ZeroSized","ty":29},"span":61,"user_ty":null}},"target":1,"unwind":"Continue"}},"span":62}},{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Constant":{"const_":{"id":6,"kind":"ZeroSized","ty":8},"span":50,"user_ty":null}}],"destination":{"local":2,"projection":[]},"func":{"Constant":{"const_":{"id":7,"kind":"ZeroSized","ty":26},"span":52,"user_ty":null}},"target":2,"unwind":"Unreachable"}},"span":53}},{"statements":[],"terminator":{"kind":"Return","span":63}}],"locals":[{"mutability":"Mut","span":64,"ty":8},{"mutability":"Not","span":65,"ty":14},{"mutability":"Not","span":66,"ty":8}],"span":68,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"f","source_info":{"scope":0,"span":65},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":null,"composite":null,"name":"result","source_info":{"scope":1,"span":67},"value":{"Place":{"local":0,"projection":[]}}},{"argument_index":1,"composite":null,"name":"dummy","source_info":{"scope":2,"span":59},"value":{"Const":{"const_":{"id":6,"kind":"ZeroSized","ty":8},"span":50,"user_ty":null}}}]}],"id":5,"name":"std::sys::backtrace::__rust_begin_short_backtrace::"}},"symbol_name":"_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h163f76a593f9a61dE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Constant":{"const_":{"id":27,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0,null,null,null,null,null,null,null,null],"mutability":"Not","provenance":{"ptrs":[]}}},"ty":41},"span":50,"user_ty":null}}}]},"span":155}],"terminator":{"kind":"Return","span":154}}],"locals":[{"mutability":"Mut","span":156,"ty":41},{"mutability":"Not","span":157,"ty":39}],"span":158,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":0,"span":157},"value":{"Place":{"local":1,"projection":[]}}}]}],"id":16,"name":" as core::panic::PanicPayload>::as_str"}},"symbol_name":"_ZN4core5panic12PanicPayload6as_str17h34f70170a81b2c4bE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":2,"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":1,"projection":["Deref"]}},{"Move":{"local":2,"projection":[]}}],"destination":{"local":0,"projection":[]},"func":{"Constant":{"const_":{"id":14,"kind":"ZeroSized","ty":42},"span":91,"user_ty":null}},"target":1,"unwind":"Continue"}},"span":91}},{"statements":[],"terminator":{"kind":"Return","span":91}}],"locals":[{"mutability":"Mut","span":91,"ty":1},{"mutability":"Not","span":91,"ty":43},{"mutability":"Not","span":91,"ty":8}],"span":91,"spread_arg":2,"var_debug_info":[]}],"id":11,"name":"<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once"}},"symbol_name":"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h0b6b3134fd4818cdE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"StorageLive":3},"span":139},{"kind":{"Assign":[{"local":3,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":1,"projection":[]}},61]}]},"span":140},{"kind":{"StorageLive":4},"span":141},{"kind":{"Assign":[{"local":4,"projection":[]},{"Cast":["Transmute",{"Copy":{"local":1,"projection":[]}},47]}]},"span":142},{"kind":{"StorageDead":3},"span":139}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":4,"projection":[]}},"targets":{"branches":[[0,1]],"otherwise":2}}},"span":138}},{"statements":[{"kind":{"StorageDead":4},"span":138}],"terminator":{"kind":{"Call":{"args":[{"Constant":{"const_":{"id":26,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,4]]}}},"ty":32},"span":144,"user_ty":null}}],"destination":{"local":2,"projection":[]},"func":{"Constant":{"const_":{"id":16,"kind":"ZeroSized","ty":48},"span":143,"user_ty":null}},"target":null,"unwind":"Unreachable"}},"span":145}},{"statements":[{"kind":{"StorageDead":4},"span":138}],"terminator":{"kind":"Return","span":146}}],"locals":[{"mutability":"Mut","span":147,"ty":8},{"mutability":"Not","span":148,"ty":62},{"mutability":"Not","span":145,"ty":27},{"mutability":"Mut","span":140,"ty":61},{"mutability":"Mut","span":141,"ty":47}],"span":153,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":0,"span":148},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":1,"span":149},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":2,"span":150},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":3,"span":151},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":4,"span":152},"value":{"Place":{"local":3,"projection":[]}}}]}],"id":15,"name":"std::ptr::NonNull::::new_unchecked::precondition_check"}},"symbol_name":"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h180abd43edd08785E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":2,"blocks":[{"statements":[{"kind":{"Assign":[{"local":3,"projection":[]},{"Discriminant":{"local":1,"projection":["Deref",{"Field":[0,41]}]}}]},"span":344}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":3,"projection":[]}},"targets":{"branches":[[0,2],[1,3]],"otherwise":1}}},"span":343}},{"statements":[],"terminator":{"kind":"Unreachable","span":344}},{"statements":[],"terminator":{"kind":{"Call":{"args":[],"destination":{"local":8,"projection":[]},"func":{"Constant":{"const_":{"id":48,"kind":"ZeroSized","ty":93},"span":345,"user_ty":null}},"target":null,"unwind":"Continue"}},"span":346}},{"statements":[{"kind":{"StorageLive":4},"span":349},{"kind":{"Assign":[{"local":4,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":1,"projection":["Deref",{"Field":[0,41]},{"Downcast":1},{"Field":[0,32]}]}]}]},"span":349},{"kind":{"StorageLive":6},"span":350},{"kind":{"StorageLive":7},"span":350},{"kind":{"Assign":[{"local":7,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":1,"projection":["Deref",{"Field":[0,41]},{"Downcast":1},{"Field":[0,32]}]}]}]},"span":350},{"kind":{"Assign":[{"local":6,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Move":{"local":7,"projection":[]}},95]}]},"span":350},{"kind":{"StorageDead":7},"span":350}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":6,"projection":[]}}],"destination":{"local":5,"projection":[]},"func":{"Constant":{"const_":{"id":49,"kind":"ZeroSized","ty":94},"span":347,"user_ty":null}},"target":4,"unwind":"Continue"}},"span":348}},{"statements":[{"kind":{"StorageDead":6},"span":353}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":2,"projection":[]}},{"Move":{"local":5,"projection":[]}}],"destination":{"local":0,"projection":[]},"func":{"Constant":{"const_":{"id":50,"kind":"ZeroSized","ty":96},"span":351,"user_ty":null}},"target":5,"unwind":"Continue"}},"span":352}},{"statements":[{"kind":{"StorageDead":4},"span":355}],"terminator":{"kind":"Return","span":354}}],"locals":[{"mutability":"Mut","span":356,"ty":97},{"mutability":"Not","span":357,"ty":98},{"mutability":"Not","span":358,"ty":99},{"mutability":"Mut","span":359,"ty":13},{"mutability":"Not","span":349,"ty":4},{"mutability":"Not","span":348,"ty":32},{"mutability":"Mut","span":350,"ty":95},{"mutability":"Mut","span":350,"ty":4},{"mutability":"Mut","span":346,"ty":27}],"span":360,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":0,"span":357},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"f","source_info":{"scope":0,"span":358},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":null,"composite":null,"name":"a","source_info":{"scope":1,"span":349},"value":{"Place":{"local":4,"projection":[]}}}]}],"id":27,"name":" as std::fmt::Display>::fmt"}},"symbol_name":"_ZN84_$LT$std..panicking..begin_panic..Payload$LT$A$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17h2995801f2bca7f36E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":82},{"kind":{"StorageLive":3},"span":82},{"kind":{"StorageLive":4},"span":83},{"kind":{"StorageLive":5},"span":84},{"kind":{"StorageLive":6},"span":85},{"kind":{"Assign":[{"local":6,"projection":[]},{"Use":{"Move":{"local":1,"projection":[{"Field":[0,32]}]}}}]},"span":85},{"kind":{"Assign":[{"local":5,"projection":[]},{"Aggregate":[{"Adt":[8,1,[{"Type":32}],null,null]},[{"Move":{"local":6,"projection":[]}}]]}]},"span":84},{"kind":{"StorageDead":6},"span":86},{"kind":{"Assign":[{"local":4,"projection":[]},{"Aggregate":[{"Adt":[9,0,[{"Type":32}],null,null]},[{"Move":{"local":5,"projection":[]}}]]}]},"span":83},{"kind":{"StorageDead":5},"span":87},{"kind":{"Assign":[{"local":3,"projection":[]},{"Ref":[{"kind":"ReErased"},{"Mut":{"kind":"Default"}},{"local":4,"projection":[]}]}]},"span":82},{"kind":{"Assign":[{"local":2,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Move":{"local":3,"projection":[]}},38]}]},"span":82},{"kind":{"StorageDead":3},"span":87},{"kind":{"Assign":[{"local":7,"projection":[]},{"Use":{"Copy":{"local":1,"projection":[{"Field":[1,35]}]}}}]},"span":88}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":2,"projection":[]}},{"Move":{"local":7,"projection":[]}},{"Constant":{"const_":{"id":12,"kind":{"Allocated":{"align":1,"bytes":[1],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":37},"span":79,"user_ty":null}},{"Constant":{"const_":{"id":13,"kind":{"Allocated":{"align":1,"bytes":[0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":37},"span":80,"user_ty":null}}],"destination":{"local":0,"projection":[]},"func":{"Constant":{"const_":{"id":11,"kind":"ZeroSized","ty":36},"span":78,"user_ty":null}},"target":null,"unwind":{"Cleanup":1}}},"span":81}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":4,"projection":[]},"target":2,"unwind":"Terminate"}},"span":89}},{"statements":[],"terminator":{"kind":"Resume","span":74}}],"locals":[{"mutability":"Mut","span":90,"ty":27},{"mutability":"Mut","span":74,"ty":28},{"mutability":"Mut","span":82,"ty":38},{"mutability":"Mut","span":82,"ty":39},{"mutability":"Mut","span":83,"ty":40},{"mutability":"Mut","span":84,"ty":41},{"mutability":"Mut","span":85,"ty":32},{"mutability":"Mut","span":74,"ty":35}],"span":74,"spread_arg":null,"var_debug_info":[{"argument_index":null,"composite":null,"name":"msg","source_info":{"scope":0,"span":76},"value":{"Place":{"local":1,"projection":[{"Field":[0,32]}]}}},{"argument_index":null,"composite":null,"name":"loc","source_info":{"scope":0,"span":71},"value":{"Place":{"local":1,"projection":[{"Field":[1,35]}]}}}]}],"id":7,"name":"std::rt::begin_panic::<&str>::{closure#0}"}},"symbol_name":"_ZN3std9panicking11begin_panic28_$u7b$$u7b$closure$u7d$$u7d$17h1ebb1eaab9f30b5aE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":3,"blocks":[{"statements":[{"kind":{"StorageLive":5},"span":239},{"kind":{"Assign":[{"local":5,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":2,"projection":[]}]}]},"span":239},{"kind":{"Assign":[{"local":4,"projection":[]},{"Use":{"Copy":{"local":2,"projection":[{"Field":[0,47]}]}}}]},"span":211},{"kind":{"StorageDead":5},"span":240}],"terminator":{"kind":{"SwitchInt":{"discr":{"Copy":{"local":4,"projection":[]}},"targets":{"branches":[[0,2]],"otherwise":1}}},"span":238}},{"statements":[{"kind":{"StorageLive":9},"span":242}],"terminator":{"kind":{"SwitchInt":{"discr":{"Copy":{"local":3,"projection":[]}},"targets":{"branches":[[0,4]],"otherwise":3}}},"span":241}},{"statements":[{"kind":{"StorageLive":6},"span":244},{"kind":{"StorageLive":7},"span":245},{"kind":{"StorageLive":8},"span":246},{"kind":{"Assign":[{"local":8,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":2,"projection":[]}]}]},"span":246},{"kind":{"StorageLive":18},"span":247},{"kind":{"StorageLive":19},"span":215},{"kind":{"Assign":[{"local":19,"projection":[]},{"Use":{"Copy":{"local":2,"projection":[{"Field":[1,65]}]}}}]},"span":215},{"kind":{"StorageLive":21},"span":216},{"kind":{"StorageLive":22},"span":216},{"kind":{"StorageLive":23},"span":216},{"kind":{"StorageLive":24},"span":216},{"kind":{"StorageLive":20},"span":217},{"kind":{"Assign":[{"local":20,"projection":[]},{"Use":{"Copy":{"local":19,"projection":[{"Field":[0,74]}]}}}]},"span":217},{"kind":{"Assign":[{"local":21,"projection":[]},{"Discriminant":{"local":20,"projection":[]}}]},"span":218},{"kind":{"Assign":[{"local":22,"projection":[]},{"BinaryOp":["Ge",{"Copy":{"local":21,"projection":[]}},{"Constant":{"const_":{"id":34,"kind":{"Allocated":{"align":8,"bytes":[1,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":2},"span":218,"user_ty":null}}]}]},"span":218},{"kind":{"Assign":[{"local":23,"projection":[]},{"BinaryOp":["Le",{"Copy":{"local":21,"projection":[]}},{"Constant":{"const_":{"id":35,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,128],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":2},"span":218,"user_ty":null}}]}]},"span":218},{"kind":{"Assign":[{"local":24,"projection":[]},{"BinaryOp":["BitAnd",{"Move":{"local":22,"projection":[]}},{"Move":{"local":23,"projection":[]}}]}]},"span":218},{"kind":{"Intrinsic":{"Assume":{"Move":{"local":24,"projection":[]}}}},"span":218},{"kind":{"Assign":[{"local":18,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":21,"projection":[]}},47]}]},"span":218},{"kind":{"StorageDead":20},"span":219},{"kind":{"StorageDead":24},"span":216},{"kind":{"StorageDead":23},"span":216},{"kind":{"StorageDead":22},"span":216},{"kind":{"StorageDead":21},"span":216},{"kind":{"StorageDead":19},"span":220},{"kind":{"Assign":[{"local":17,"projection":[]},{"Cast":["Transmute",{"Copy":{"local":18,"projection":[]}},61]}]},"span":248},{"kind":{"StorageDead":18},"span":249},{"kind":{"Assign":[{"local":25,"projection":[]},{"NullaryOp":["UbChecks",37]}]},"span":203}],"terminator":{"kind":{"SwitchInt":{"discr":{"Copy":{"local":25,"projection":[]}},"targets":{"branches":[[0,9]],"otherwise":7}}},"span":243}},{"statements":[{"kind":{"StorageLive":10},"span":252},{"kind":{"Assign":[{"local":10,"projection":[]},{"Use":{"Copy":{"local":2,"projection":[]}}}]},"span":252},{"kind":{"StorageLive":34},"span":253},{"kind":{"Assign":[{"local":34,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":10,"projection":[]}]}]},"span":253},{"kind":{"StorageDead":34},"span":254},{"kind":{"StorageLive":35},"span":255},{"kind":{"StorageLive":36},"span":256},{"kind":{"Assign":[{"local":36,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":10,"projection":[]}]}]},"span":256},{"kind":{"StorageLive":37},"span":215},{"kind":{"Assign":[{"local":37,"projection":[]},{"Use":{"Copy":{"local":2,"projection":[{"Field":[1,65]}]}}}]},"span":215},{"kind":{"StorageLive":39},"span":216},{"kind":{"StorageLive":40},"span":216},{"kind":{"StorageLive":41},"span":216},{"kind":{"StorageLive":42},"span":216},{"kind":{"StorageLive":38},"span":217},{"kind":{"Assign":[{"local":38,"projection":[]},{"Use":{"Copy":{"local":37,"projection":[{"Field":[0,74]}]}}}]},"span":217},{"kind":{"Assign":[{"local":39,"projection":[]},{"Discriminant":{"local":38,"projection":[]}}]},"span":218},{"kind":{"Assign":[{"local":40,"projection":[]},{"BinaryOp":["Ge",{"Copy":{"local":39,"projection":[]}},{"Constant":{"const_":{"id":34,"kind":{"Allocated":{"align":8,"bytes":[1,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":2},"span":218,"user_ty":null}}]}]},"span":218},{"kind":{"Assign":[{"local":41,"projection":[]},{"BinaryOp":["Le",{"Copy":{"local":39,"projection":[]}},{"Constant":{"const_":{"id":35,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,128],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":2},"span":218,"user_ty":null}}]}]},"span":218},{"kind":{"Assign":[{"local":42,"projection":[]},{"BinaryOp":["BitAnd",{"Move":{"local":40,"projection":[]}},{"Move":{"local":41,"projection":[]}}]}]},"span":218},{"kind":{"Intrinsic":{"Assume":{"Move":{"local":42,"projection":[]}}}},"span":218},{"kind":{"Assign":[{"local":35,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":39,"projection":[]}},47]}]},"span":218},{"kind":{"StorageDead":38},"span":219},{"kind":{"StorageDead":42},"span":216},{"kind":{"StorageDead":41},"span":216},{"kind":{"StorageDead":40},"span":216},{"kind":{"StorageDead":39},"span":216},{"kind":{"StorageDead":37},"span":220},{"kind":{"StorageDead":36},"span":257}],"terminator":{"kind":{"Call":{"args":[{"Copy":{"local":4,"projection":[]}},{"Move":{"local":35,"projection":[]}}],"destination":{"local":9,"projection":[]},"func":{"Constant":{"const_":{"id":39,"kind":"ZeroSized","ty":78},"span":250,"user_ty":null}},"target":13,"unwind":"Unreachable"}},"span":251}},{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Copy":{"local":2,"projection":[]}}],"destination":{"local":9,"projection":[]},"func":{"Constant":{"const_":{"id":40,"kind":"ZeroSized","ty":79},"span":258,"user_ty":null}},"target":5,"unwind":"Continue"}},"span":259}},{"statements":[{"kind":{"StorageLive":11},"span":261},{"kind":{"StorageLive":12},"span":262},{"kind":{"StorageLive":13},"span":263},{"kind":{"Assign":[{"local":14,"projection":[]},{"Use":{"Copy":{"local":9,"projection":[]}}}]},"span":264},{"kind":{"StorageLive":44},"span":141},{"kind":{"Assign":[{"local":44,"projection":[]},{"Cast":["Transmute",{"Copy":{"local":14,"projection":[]}},47]}]},"span":142}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":44,"projection":[]}},"targets":{"branches":[[0,14]],"otherwise":15}}},"span":260}},{"statements":[],"terminator":{"kind":"Return","span":265}},{"statements":[{"kind":{"StorageLive":27},"span":268},{"kind":{"Assign":[{"local":27,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":17,"projection":[]}},62]}]},"span":268}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":27,"projection":[]}}],"destination":{"local":26,"projection":[]},"func":{"Constant":{"const_":{"id":41,"kind":"ZeroSized","ty":80},"span":266,"user_ty":null}},"target":8,"unwind":"Unreachable"}},"span":267}},{"statements":[{"kind":{"StorageDead":27},"span":269},{"kind":{"Assign":[{"local":28,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":17,"projection":[]}},46]}]},"span":270},{"kind":{"Assign":[{"local":7,"projection":[]},{"Aggregate":[{"Adt":[20,0,[{"Type":16}],null,null]},[{"Copy":{"local":28,"projection":[]}}]]}]},"span":271},{"kind":{"StorageDead":8},"span":272},{"kind":{"StorageLive":29},"span":273},{"kind":{"StorageLive":30},"span":274},{"kind":{"Assign":[{"local":30,"projection":[]},{"Use":{"Copy":{"local":17,"projection":[]}}}]},"span":181},{"kind":{"Assign":[{"local":29,"projection":[]},{"Aggregate":[{"RawPtr":[81,"Mut"]},[{"Copy":{"local":17,"projection":[]}},{"Constant":{"const_":{"id":20,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":47},"span":50,"user_ty":null}}]]}]},"span":275},{"kind":{"StorageDead":30},"span":276},{"kind":{"StorageLive":33},"span":277}],"terminator":{"kind":{"Goto":{"target":10}},"span":243}},{"statements":[{"kind":{"Assign":[{"local":28,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":17,"projection":[]}},46]}]},"span":270},{"kind":{"Assign":[{"local":7,"projection":[]},{"Aggregate":[{"Adt":[20,0,[{"Type":16}],null,null]},[{"Copy":{"local":28,"projection":[]}}]]}]},"span":271},{"kind":{"StorageDead":8},"span":272},{"kind":{"StorageLive":29},"span":273},{"kind":{"StorageLive":30},"span":274},{"kind":{"Assign":[{"local":30,"projection":[]},{"Use":{"Copy":{"local":17,"projection":[]}}}]},"span":181},{"kind":{"Assign":[{"local":29,"projection":[]},{"Aggregate":[{"RawPtr":[81,"Mut"]},[{"Copy":{"local":17,"projection":[]}},{"Constant":{"const_":{"id":20,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":47},"span":50,"user_ty":null}}]]}]},"span":275},{"kind":{"StorageDead":30},"span":276},{"kind":{"StorageLive":33},"span":277}],"terminator":{"kind":{"SwitchInt":{"discr":{"Copy":{"local":25,"projection":[]}},"targets":{"branches":[[0,12]],"otherwise":10}}},"span":243}},{"statements":[{"kind":{"StorageLive":32},"span":268},{"kind":{"Assign":[{"local":32,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":17,"projection":[]}},62]}]},"span":268}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":32,"projection":[]}}],"destination":{"local":31,"projection":[]},"func":{"Constant":{"const_":{"id":41,"kind":"ZeroSized","ty":80},"span":266,"user_ty":null}},"target":11,"unwind":"Unreachable"}},"span":267}},{"statements":[{"kind":{"StorageDead":32},"span":269}],"terminator":{"kind":{"Goto":{"target":12}},"span":278}},{"statements":[{"kind":{"Assign":[{"local":33,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":29,"projection":[]}},68]}]},"span":270},{"kind":{"Assign":[{"local":6,"projection":[]},{"Aggregate":[{"Adt":[20,0,[{"Type":81}],null,null]},[{"Copy":{"local":33,"projection":[]}}]]}]},"span":271},{"kind":{"StorageDead":33},"span":277},{"kind":{"StorageDead":29},"span":280},{"kind":{"StorageDead":7},"span":281},{"kind":{"Assign":[{"local":0,"projection":[]},{"Aggregate":[{"Adt":[24,0,[{"Type":67},{"Type":82}],null,null]},[{"Move":{"local":6,"projection":[]}}]]}]},"span":282},{"kind":{"StorageDead":6},"span":279}],"terminator":{"kind":{"Goto":{"target":6}},"span":279}},{"statements":[{"kind":{"StorageDead":35},"span":284},{"kind":{"StorageDead":10},"span":285}],"terminator":{"kind":{"Goto":{"target":5}},"span":283}},{"statements":[{"kind":{"StorageDead":44},"span":260},{"kind":{"Assign":[{"local":13,"projection":[]},{"Use":{"Constant":{"const_":{"id":42,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":83},"span":50,"user_ty":null}}}]},"span":286},{"kind":{"StorageLive":49},"span":287},{"kind":{"Assign":[{"local":12,"projection":[]},{"Use":{"Constant":{"const_":{"id":43,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":84},"span":50,"user_ty":null}}}]},"span":288},{"kind":{"StorageDead":49},"span":287},{"kind":{"StorageDead":13},"span":289},{"kind":{"StorageLive":50},"span":261},{"kind":{"StorageDead":50},"span":261},{"kind":{"StorageDead":12},"span":290},{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Constant":{"const_":{"id":44,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0,null,null,null,null,null,null,null,null],"mutability":"Not","provenance":{"ptrs":[]}}},"ty":70},"span":50,"user_ty":null}}}]},"span":291},{"kind":{"StorageDead":11},"span":292},{"kind":{"StorageDead":9},"span":293}],"terminator":{"kind":{"Goto":{"target":6}},"span":265}},{"statements":[{"kind":{"StorageDead":44},"span":260},{"kind":{"StorageLive":43},"span":294},{"kind":{"StorageLive":48},"span":295},{"kind":{"StorageLive":45},"span":243},{"kind":{"Assign":[{"local":45,"projection":[]},{"NullaryOp":["UbChecks",37]}]},"span":203}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":45,"projection":[]}},"targets":{"branches":[[0,18]],"otherwise":16}}},"span":243}},{"statements":[{"kind":{"StorageLive":47},"span":268},{"kind":{"Assign":[{"local":47,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":14,"projection":[]}},62]}]},"span":268}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":47,"projection":[]}}],"destination":{"local":46,"projection":[]},"func":{"Constant":{"const_":{"id":41,"kind":"ZeroSized","ty":80},"span":266,"user_ty":null}},"target":17,"unwind":"Unreachable"}},"span":267}},{"statements":[{"kind":{"StorageDead":47},"span":269}],"terminator":{"kind":{"Goto":{"target":18}},"span":278}},{"statements":[{"kind":{"StorageDead":45},"span":296},{"kind":{"Assign":[{"local":48,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":14,"projection":[]}},46]}]},"span":270},{"kind":{"Assign":[{"local":43,"projection":[]},{"Aggregate":[{"Adt":[20,0,[{"Type":16}],null,null]},[{"Copy":{"local":48,"projection":[]}}]]}]},"span":271},{"kind":{"StorageDead":48},"span":295},{"kind":{"Assign":[{"local":13,"projection":[]},{"Aggregate":[{"Adt":[8,1,[{"Type":71}],null,null]},[{"Move":{"local":43,"projection":[]}}]]}]},"span":297},{"kind":{"StorageDead":43},"span":298},{"kind":{"StorageLive":49},"span":287},{"kind":{"Assign":[{"local":49,"projection":[]},{"Use":{"Move":{"local":13,"projection":[{"Downcast":1},{"Field":[0,71]}]}}}]},"span":299},{"kind":{"Assign":[{"local":12,"projection":[]},{"Aggregate":[{"Adt":[24,0,[{"Type":71},{"Type":82}],null,null]},[{"Copy":{"local":49,"projection":[]}}]]}]},"span":300},{"kind":{"StorageDead":49},"span":287},{"kind":{"StorageDead":13},"span":289},{"kind":{"StorageLive":50},"span":261},{"kind":{"Assign":[{"local":50,"projection":[]},{"Use":{"Move":{"local":12,"projection":[{"Downcast":0},{"Field":[0,71]}]}}}]},"span":301},{"kind":{"Assign":[{"local":11,"projection":[]},{"Aggregate":[{"Adt":[25,0,[{"Type":85},{"Type":71}],null,null]},[{"Copy":{"local":50,"projection":[]}}]]}]},"span":302},{"kind":{"StorageDead":50},"span":261},{"kind":{"StorageDead":12},"span":290},{"kind":{"Assign":[{"local":15,"projection":[]},{"Use":{"Copy":{"local":11,"projection":[{"Downcast":0},{"Field":[0,71]}]}}}]},"span":303},{"kind":{"StorageDead":11},"span":292},{"kind":{"StorageLive":16},"span":304},{"kind":{"StorageLive":53},"span":304},{"kind":{"StorageLive":51},"span":273},{"kind":{"StorageLive":52},"span":274},{"kind":{"Assign":[{"local":53,"projection":[]},{"Use":{"Copy":{"local":15,"projection":[{"Field":[0,46]}]}}}]},"span":178},{"kind":{"Assign":[{"local":52,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":53,"projection":[]}},61]}]},"span":181},{"kind":{"Assign":[{"local":51,"projection":[]},{"Aggregate":[{"RawPtr":[81,"Mut"]},[{"Copy":{"local":52,"projection":[]}},{"Copy":{"local":4,"projection":[]}}]]}]},"span":275},{"kind":{"StorageDead":52},"span":276},{"kind":{"StorageLive":57},"span":277},{"kind":{"StorageLive":54},"span":243},{"kind":{"Assign":[{"local":54,"projection":[]},{"NullaryOp":["UbChecks",37]}]},"span":203}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":54,"projection":[]}},"targets":{"branches":[[0,21]],"otherwise":19}}},"span":243}},{"statements":[{"kind":{"StorageLive":56},"span":268},{"kind":{"Assign":[{"local":56,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":53,"projection":[]}},62]}]},"span":268}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":56,"projection":[]}}],"destination":{"local":55,"projection":[]},"func":{"Constant":{"const_":{"id":41,"kind":"ZeroSized","ty":80},"span":266,"user_ty":null}},"target":20,"unwind":"Unreachable"}},"span":267}},{"statements":[{"kind":{"StorageDead":56},"span":269}],"terminator":{"kind":{"Goto":{"target":21}},"span":278}},{"statements":[{"kind":{"StorageDead":54},"span":296},{"kind":{"Assign":[{"local":57,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":51,"projection":[]}},68]}]},"span":270},{"kind":{"Assign":[{"local":16,"projection":[]},{"Aggregate":[{"Adt":[20,0,[{"Type":81}],null,null]},[{"Copy":{"local":57,"projection":[]}}]]}]},"span":271},{"kind":{"StorageDead":57},"span":277},{"kind":{"StorageDead":51},"span":280},{"kind":{"StorageDead":53},"span":304},{"kind":{"Assign":[{"local":0,"projection":[]},{"Aggregate":[{"Adt":[24,0,[{"Type":67},{"Type":82}],null,null]},[{"Move":{"local":16,"projection":[]}}]]}]},"span":305},{"kind":{"StorageDead":16},"span":306},{"kind":{"StorageDead":9},"span":293}],"terminator":{"kind":{"Goto":{"target":6}},"span":293}}],"locals":[{"mutability":"Mut","span":307,"ty":70},{"mutability":"Not","span":308,"ty":64},{"mutability":"Not","span":309,"ty":69},{"mutability":"Not","span":310,"ty":37},{"mutability":"Mut","span":311,"ty":47},{"mutability":"Mut","span":239,"ty":77},{"mutability":"Mut","span":244,"ty":67},{"mutability":"Mut","span":245,"ty":71},{"mutability":"Mut","span":246,"ty":77},{"mutability":"Not","span":242,"ty":61},{"mutability":"Mut","span":252,"ty":69},{"mutability":"Mut","span":261,"ty":86},{"mutability":"Mut","span":262,"ty":84},{"mutability":"Mut","span":263,"ty":83},{"mutability":"Mut","span":264,"ty":61},{"mutability":"Not","span":303,"ty":71},{"mutability":"Mut","span":304,"ty":67},{"mutability":"Mut","span":312,"ty":61},{"mutability":"Mut","span":247,"ty":47},{"mutability":"Mut","span":215,"ty":65},{"mutability":"Not","span":217,"ty":74},{"mutability":"Mut","span":217,"ty":2},{"mutability":"Mut","span":218,"ty":37},{"mutability":"Mut","span":218,"ty":37},{"mutability":"Mut","span":218,"ty":37},{"mutability":"Mut","span":243,"ty":37},{"mutability":"Not","span":267,"ty":8},{"mutability":"Mut","span":268,"ty":62},{"mutability":"Mut","span":270,"ty":46},{"mutability":"Mut","span":273,"ty":87},{"mutability":"Mut","span":274,"ty":61},{"mutability":"Not","span":267,"ty":8},{"mutability":"Mut","span":268,"ty":62},{"mutability":"Mut","span":270,"ty":68},{"mutability":"Mut","span":253,"ty":77},{"mutability":"Mut","span":255,"ty":47},{"mutability":"Mut","span":256,"ty":77},{"mutability":"Mut","span":215,"ty":65},{"mutability":"Not","span":217,"ty":74},{"mutability":"Mut","span":217,"ty":2},{"mutability":"Mut","span":218,"ty":37},{"mutability":"Mut","span":218,"ty":37},{"mutability":"Mut","span":218,"ty":37},{"mutability":"Mut","span":294,"ty":71},{"mutability":"Mut","span":141,"ty":47},{"mutability":"Mut","span":243,"ty":37},{"mutability":"Not","span":267,"ty":8},{"mutability":"Mut","span":268,"ty":62},{"mutability":"Mut","span":270,"ty":46},{"mutability":"Not","span":299,"ty":71},{"mutability":"Not","span":301,"ty":71},{"mutability":"Mut","span":273,"ty":87},{"mutability":"Mut","span":274,"ty":61},{"mutability":"Mut","span":178,"ty":46},{"mutability":"Mut","span":243,"ty":37},{"mutability":"Not","span":267,"ty":8},{"mutability":"Mut","span":268,"ty":62},{"mutability":"Mut","span":270,"ty":68}],"span":335,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":0,"span":308},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"layout","source_info":{"scope":0,"span":309},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":3,"composite":null,"name":"zeroed","source_info":{"scope":0,"span":310},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":null,"composite":null,"name":"size","source_info":{"scope":1,"span":313},"value":{"Place":{"local":4,"projection":[]}}},{"argument_index":null,"composite":null,"name":"raw_ptr","source_info":{"scope":2,"span":242},"value":{"Place":{"local":9,"projection":[]}}},{"argument_index":null,"composite":null,"name":"ptr","source_info":{"scope":3,"span":314},"value":{"Place":{"local":15,"projection":[]}}},{"argument_index":null,"composite":null,"name":"residual","source_info":{"scope":4,"span":315},"value":{"Const":{"const_":{"id":45,"kind":"ZeroSized","ty":85},"span":50,"user_ty":null}}},{"argument_index":null,"composite":null,"name":"val","source_info":{"scope":6,"span":303},"value":{"Place":{"local":15,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":8,"span":234},"value":{"Place":{"local":5,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":9,"span":316},"value":{"Place":{"local":8,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":10,"span":235},"value":{"Place":{"local":8,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":11,"span":236},"value":{"Place":{"local":19,"projection":[]}}},{"argument_index":1,"composite":null,"name":"addr","source_info":{"scope":12,"span":317},"value":{"Place":{"local":18,"projection":[]}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":13,"span":318},"value":{"Place":{"local":17,"projection":[]}}},{"argument_index":1,"composite":null,"name":"data","source_info":{"scope":16,"span":319},"value":{"Place":{"local":7,"projection":[]}}},{"argument_index":2,"composite":null,"name":"len","source_info":{"scope":16,"span":320},"value":{"Const":{"const_":{"id":20,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":47},"span":321,"user_ty":null}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":17,"span":199},"value":{"Place":{"local":7,"projection":[]}}},{"argument_index":1,"composite":null,"name":"data","source_info":{"scope":18,"span":322},"value":{"Place":{"local":30,"projection":[]}}},{"argument_index":2,"composite":null,"name":"len","source_info":{"scope":18,"span":323},"value":{"Const":{"const_":{"id":20,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":47},"span":321,"user_ty":null}}},{"argument_index":1,"composite":null,"name":"data_pointer","source_info":{"scope":19,"span":324},"value":{"Place":{"local":30,"projection":[]}}},{"argument_index":2,"composite":null,"name":"metadata","source_info":{"scope":19,"span":325},"value":{"Const":{"const_":{"id":20,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":47},"span":321,"user_ty":null}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":20,"span":318},"value":{"Place":{"local":29,"projection":[]}}},{"argument_index":1,"composite":null,"name":"layout","source_info":{"scope":23,"span":326},"value":{"Place":{"local":10,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":24,"span":234},"value":{"Place":{"local":34,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":25,"span":235},"value":{"Place":{"local":36,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":26,"span":236},"value":{"Place":{"local":37,"projection":[]}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":27,"span":327},"value":{"Place":{"local":14,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":28,"span":149},"value":{"Place":{"local":14,"projection":[]}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":29,"span":150},"value":{"Place":{"local":14,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":30,"span":151},"value":{"Place":{"local":14,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":31,"span":152},"value":{"Place":{"local":14,"projection":[]}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":32,"span":318},"value":{"Place":{"local":14,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":35,"span":328},"value":{"Place":{"local":13,"projection":[]}}},{"argument_index":2,"composite":null,"name":"err","source_info":{"scope":35,"span":329},"value":{"Const":{"const_":{"id":46,"kind":"ZeroSized","ty":82},"span":50,"user_ty":null}}},{"argument_index":null,"composite":null,"name":"v","source_info":{"scope":36,"span":299},"value":{"Place":{"local":49,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":37,"span":330},"value":{"Place":{"local":12,"projection":[]}}},{"argument_index":null,"composite":null,"name":"v","source_info":{"scope":38,"span":301},"value":{"Place":{"local":50,"projection":[]}}},{"argument_index":null,"composite":null,"name":"e","source_info":{"scope":39,"span":331},"value":{"Const":{"const_":{"id":46,"kind":"ZeroSized","ty":82},"span":50,"user_ty":null}}},{"argument_index":1,"composite":null,"name":"data","source_info":{"scope":40,"span":319},"value":{"Place":{"local":15,"projection":[]}}},{"argument_index":2,"composite":null,"name":"len","source_info":{"scope":40,"span":320},"value":{"Place":{"local":4,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":41,"span":199},"value":{"Place":{"local":15,"projection":[]}}},{"argument_index":1,"composite":null,"name":"data","source_info":{"scope":42,"span":322},"value":{"Place":{"local":52,"projection":[]}}},{"argument_index":2,"composite":null,"name":"len","source_info":{"scope":42,"span":323},"value":{"Place":{"local":4,"projection":[]}}},{"argument_index":1,"composite":null,"name":"data_pointer","source_info":{"scope":43,"span":324},"value":{"Place":{"local":52,"projection":[]}}},{"argument_index":2,"composite":null,"name":"metadata","source_info":{"scope":43,"span":325},"value":{"Place":{"local":4,"projection":[]}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":44,"span":318},"value":{"Place":{"local":51,"projection":[]}}},{"argument_index":1,"composite":null,"name":"residual","source_info":{"scope":47,"span":332},"value":{"Const":{"const_":{"id":45,"kind":"ZeroSized","ty":85},"span":50,"user_ty":null}}},{"argument_index":null,"composite":null,"name":"e","source_info":{"scope":48,"span":333},"value":{"Const":{"const_":{"id":46,"kind":"ZeroSized","ty":82},"span":50,"user_ty":null}}},{"argument_index":1,"composite":null,"name":"t","source_info":{"scope":49,"span":334},"value":{"Const":{"const_":{"id":46,"kind":"ZeroSized","ty":82},"span":50,"user_ty":null}}}]}],"id":23,"name":"std::alloc::Global::alloc_impl"}},"symbol_name":"_ZN5alloc5alloc6Global10alloc_impl17hfeb4b7829cd89493E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":71}],"terminator":{"kind":{"Call":{"args":[],"destination":{"local":2,"projection":[]},"func":{"Constant":{"const_":{"id":9,"kind":"ZeroSized","ty":30},"span":69,"user_ty":null}},"target":1,"unwind":"Unreachable"}},"span":70}},{"statements":[{"kind":{"StorageLive":3},"span":74},{"kind":{"Assign":[{"local":3,"projection":[]},{"Aggregate":[{"Closure":[7,[{"Type":32},{"Type":1},{"Type":33},{"Type":34}]]},[{"Move":{"local":1,"projection":[]}},{"Copy":{"local":2,"projection":[]}}]]}]},"span":74}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":3,"projection":[]}}],"destination":{"local":0,"projection":[]},"func":{"Constant":{"const_":{"id":10,"kind":"ZeroSized","ty":31},"span":72,"user_ty":null}},"target":null,"unwind":"Continue"}},"span":73}}],"locals":[{"mutability":"Mut","span":75,"ty":27},{"mutability":"Not","span":76,"ty":32},{"mutability":"Not","span":71,"ty":35},{"mutability":"Mut","span":74,"ty":28}],"span":77,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"msg","source_info":{"scope":0,"span":76},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":null,"composite":null,"name":"loc","source_info":{"scope":1,"span":71},"value":{"Place":{"local":2,"projection":[]}}}]}],"id":6,"name":"std::rt::begin_panic::<&str>"}},"symbol_name":"_ZN3std9panicking11begin_panic17h046658c3c0b9185bE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":373},{"kind":{"StorageLive":3},"span":374},{"kind":{"Assign":[{"local":3,"projection":[]},{"Ref":[{"kind":"ReErased"},{"Mut":{"kind":"TwoPhaseBorrow"}},{"local":1,"projection":["Deref",{"Field":[0,41]}]}]}]},"span":374},{"kind":{"Assign":[{"local":9,"projection":[]},{"Aggregate":[{"Adt":[8,0,[{"Type":32}],null,null]},[]]}]},"span":375},{"kind":{"Assign":[{"local":2,"projection":[]},{"Use":{"Copy":{"local":1,"projection":["Deref",{"Field":[0,41]}]}}}]},"span":376},{"kind":{"Assign":[{"local":1,"projection":["Deref",{"Field":[0,41]}]},{"Use":{"Copy":{"local":9,"projection":[]}}}]},"span":377},{"kind":{"StorageDead":3},"span":378},{"kind":{"Assign":[{"local":4,"projection":[]},{"Discriminant":{"local":2,"projection":[]}}]},"span":373}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":4,"projection":[]}},"targets":{"branches":[[0,2],[1,3]],"otherwise":1}}},"span":372}},{"statements":[],"terminator":{"kind":"Unreachable","span":373}},{"statements":[],"terminator":{"kind":{"Call":{"args":[],"destination":{"local":8,"projection":[]},"func":{"Constant":{"const_":{"id":48,"kind":"ZeroSized","ty":93},"span":379,"user_ty":null}},"target":null,"unwind":"Continue"}},"span":380}},{"statements":[{"kind":{"Assign":[{"local":5,"projection":[]},{"Use":{"Move":{"local":2,"projection":[{"Downcast":1},{"Field":[0,32]}]}}}]},"span":383},{"kind":{"StorageLive":7},"span":382}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":5,"projection":[]}}],"destination":{"local":7,"projection":[]},"func":{"Constant":{"const_":{"id":51,"kind":"ZeroSized","ty":101},"span":381,"user_ty":0}},"target":4,"unwind":"Continue"}},"span":382}},{"statements":[{"kind":{"Assign":[{"local":6,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Move":{"local":7,"projection":[]}},102]}]},"span":382},{"kind":{"StorageDead":7},"span":385},{"kind":{"StorageDead":2},"span":386},{"kind":{"StorageLive":11},"span":387},{"kind":{"StorageLive":15},"span":387},{"kind":{"StorageLive":14},"span":387},{"kind":{"StorageLive":10},"span":388},{"kind":{"Assign":[{"local":10,"projection":[]},{"Aggregate":[{"Adt":[30,0,[{"Type":102}],null,null]},[{"Copy":{"local":6,"projection":[]}}]]}]},"span":389},{"kind":{"Assign":[{"local":11,"projection":[]},{"Ref":[{"kind":"ReErased"},{"Mut":{"kind":"Default"}},{"local":10,"projection":[]}]}]},"span":390},{"kind":{"Assign":[{"local":15,"projection":[]},{"Use":{"Copy":{"local":10,"projection":[{"Field":[0,102]},{"Field":[0,103]},{"Field":[0,104]}]}}}]},"span":391},{"kind":{"Assign":[{"local":14,"projection":[]},{"Use":{"Copy":{"local":15,"projection":[{"Field":[0,105]}]}}}]},"span":391},{"kind":{"Assign":[{"local":0,"projection":[]},{"AddressOf":["Mut",{"local":14,"projection":["Deref"]}]}]},"span":391},{"kind":{"StorageLive":12},"span":392},{"kind":{"StorageLive":13},"span":393},{"kind":{"Assign":[{"local":13,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":10,"projection":[]}]}]},"span":393},{"kind":{"StorageDead":13},"span":393},{"kind":{"Assign":[{"local":12,"projection":[]},{"AddressOf":["Not",{"local":10,"projection":[{"Field":[0,102]},{"Field":[1,72]}]}]}]},"span":392},{"kind":{"StorageDead":12},"span":394},{"kind":{"StorageDead":10},"span":395},{"kind":{"StorageDead":14},"span":387},{"kind":{"StorageDead":15},"span":387},{"kind":{"StorageDead":11},"span":387}],"terminator":{"kind":"Return","span":384}}],"locals":[{"mutability":"Mut","span":396,"ty":106},{"mutability":"Not","span":397,"ty":39},{"mutability":"Mut","span":373,"ty":41},{"mutability":"Mut","span":374,"ty":107},{"mutability":"Mut","span":398,"ty":13},{"mutability":"Not","span":383,"ty":32},{"mutability":"Mut","span":399,"ty":102},{"mutability":"Mut","span":382,"ty":92},{"mutability":"Mut","span":380,"ty":27},{"mutability":"Mut","span":375,"ty":41},{"mutability":"Mut","span":388,"ty":108},{"mutability":"Mut","span":390,"ty":109},{"mutability":"Mut","span":392,"ty":110},{"mutability":"Mut","span":393,"ty":111},{"mutability":"Mut","span":400,"ty":105},{"mutability":"Mut","span":400,"ty":104}],"span":416,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":0,"span":397},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":null,"composite":null,"name":"data","source_info":{"scope":1,"span":401},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":null,"composite":null,"name":"a","source_info":{"scope":2,"span":383},"value":{"Place":{"local":5,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":3,"span":402},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":1,"composite":null,"name":"dest","source_info":{"scope":4,"span":403},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":2,"composite":null,"name":"src","source_info":{"scope":4,"span":404},"value":{"Place":{"local":9,"projection":[]}}},{"argument_index":null,"composite":null,"name":"result","source_info":{"scope":5,"span":405},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"src","source_info":{"scope":6,"span":406},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":1,"composite":null,"name":"dst","source_info":{"scope":7,"span":407},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":2,"composite":null,"name":"src","source_info":{"scope":7,"span":408},"value":{"Place":{"local":9,"projection":[]}}},{"argument_index":1,"composite":null,"name":"b","source_info":{"scope":8,"span":409},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":1,"composite":null,"name":"b","source_info":{"scope":9,"span":410},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":null,"composite":null,"name":"b","source_info":{"scope":10,"span":388},"value":{"Place":{"local":10,"projection":[]}}},{"argument_index":null,"composite":null,"name":"ptr","source_info":{"scope":11,"span":411},"value":{"Place":{"local":0,"projection":[]}}},{"argument_index":null,"composite":null,"name":"alloc","source_info":{"scope":12,"span":412},"value":{"Const":{"const_":{"id":52,"kind":"ZeroSized","ty":72},"span":50,"user_ty":null}}},{"argument_index":1,"composite":null,"name":"value","source_info":{"scope":13,"span":413},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":14,"span":414},"value":{"Place":{"local":11,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":15,"span":415},"value":{"Place":{"local":13,"projection":[]}}},{"argument_index":1,"composite":null,"name":"src","source_info":{"scope":16,"span":406},"value":{"Place":{"local":12,"projection":[]}}}]}],"id":29,"name":" as core::panic::PanicPayload>::take_box"}},"symbol_name":"_ZN91_$LT$std..panicking..begin_panic..Payload$LT$A$GT$$u20$as$u20$core..panic..PanicPayload$GT$8take_box17h38a7afb365d90d28E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[],"terminator":{"kind":"Return","span":137}}],"locals":[{"mutability":"Mut","span":137,"ty":8},{"mutability":"Not","span":137,"ty":60}],"span":137,"spread_arg":null,"var_debug_info":[]}],"id":14,"name":"std::ptr::drop_in_place::>"}},"symbol_name":"_ZN4core3ptr72drop_in_place$LT$std..panicking..begin_panic..Payload$LT$$RF$str$GT$$GT$17h1b47a62f19fbd5f1E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"StorageLive":2},"span":202},{"kind":{"StorageLive":7},"span":201},{"kind":{"Assign":[{"local":7,"projection":[]},{"NullaryOp":["UbChecks",37]}]},"span":203}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":7,"projection":[]}},"targets":{"branches":[[0,5]],"otherwise":3}}},"span":201}},{"statements":[{"kind":{"StorageDead":5},"span":205},{"kind":{"StorageDead":3},"span":205}],"terminator":{"kind":"Return","span":204}},{"statements":[{"kind":{"StorageDead":2},"span":208},{"kind":{"StorageLive":3},"span":209},{"kind":{"StorageLive":4},"span":210},{"kind":{"Assign":[{"local":4,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":1,"projection":[]}]}]},"span":210},{"kind":{"Assign":[{"local":3,"projection":[]},{"Use":{"Copy":{"local":1,"projection":[{"Field":[0,47]}]}}}]},"span":211},{"kind":{"StorageDead":4},"span":212},{"kind":{"StorageLive":5},"span":213},{"kind":{"StorageLive":6},"span":214},{"kind":{"Assign":[{"local":6,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":1,"projection":[]}]}]},"span":214},{"kind":{"StorageLive":10},"span":215},{"kind":{"Assign":[{"local":10,"projection":[]},{"Use":{"Copy":{"local":1,"projection":[{"Field":[1,65]}]}}}]},"span":215},{"kind":{"StorageLive":12},"span":216},{"kind":{"StorageLive":13},"span":216},{"kind":{"StorageLive":14},"span":216},{"kind":{"StorageLive":15},"span":216},{"kind":{"StorageLive":11},"span":217},{"kind":{"Assign":[{"local":11,"projection":[]},{"Use":{"Copy":{"local":10,"projection":[{"Field":[0,74]}]}}}]},"span":217},{"kind":{"Assign":[{"local":12,"projection":[]},{"Discriminant":{"local":11,"projection":[]}}]},"span":218},{"kind":{"Assign":[{"local":13,"projection":[]},{"BinaryOp":["Ge",{"Copy":{"local":12,"projection":[]}},{"Constant":{"const_":{"id":34,"kind":{"Allocated":{"align":8,"bytes":[1,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":2},"span":218,"user_ty":null}}]}]},"span":218},{"kind":{"Assign":[{"local":14,"projection":[]},{"BinaryOp":["Le",{"Copy":{"local":12,"projection":[]}},{"Constant":{"const_":{"id":35,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,128],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":2},"span":218,"user_ty":null}}]}]},"span":218},{"kind":{"Assign":[{"local":15,"projection":[]},{"BinaryOp":["BitAnd",{"Move":{"local":13,"projection":[]}},{"Move":{"local":14,"projection":[]}}]}]},"span":218},{"kind":{"Intrinsic":{"Assume":{"Move":{"local":15,"projection":[]}}}},"span":218},{"kind":{"Assign":[{"local":5,"projection":[]},{"Cast":["IntToInt",{"Copy":{"local":12,"projection":[]}},47]}]},"span":218},{"kind":{"StorageDead":11},"span":219},{"kind":{"StorageDead":15},"span":216},{"kind":{"StorageDead":14},"span":216},{"kind":{"StorageDead":13},"span":216},{"kind":{"StorageDead":12},"span":216},{"kind":{"StorageDead":10},"span":220},{"kind":{"StorageDead":6},"span":221}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":3,"projection":[]}},{"Move":{"local":5,"projection":[]}}],"destination":{"local":0,"projection":[]},"func":{"Constant":{"const_":{"id":33,"kind":"ZeroSized","ty":73},"span":206,"user_ty":null}},"target":1,"unwind":"Unreachable"}},"span":207}},{"statements":[{"kind":{"StorageLive":9},"span":224},{"kind":{"Assign":[{"local":9,"projection":[]},{"Cast":["PtrToPtr",{"Constant":{"const_":{"id":37,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,7]]}}},"ty":46},"span":50,"user_ty":null}},56]}]},"span":224}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":9,"projection":[]}},{"Constant":{"const_":{"id":19,"kind":{"Allocated":{"align":8,"bytes":[1,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":47},"span":50,"user_ty":null}}],"destination":{"local":8,"projection":[]},"func":{"Constant":{"const_":{"id":36,"kind":"ZeroSized","ty":75},"span":222,"user_ty":null}},"target":4,"unwind":"Unreachable"}},"span":223}},{"statements":[{"kind":{"StorageDead":9},"span":226}],"terminator":{"kind":{"Goto":{"target":5}},"span":225}},{"statements":[{"kind":{"StorageDead":7},"span":229}],"terminator":{"kind":{"Call":{"args":[{"Constant":{"const_":{"id":37,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,7]]}}},"ty":46},"span":50,"user_ty":null}}],"destination":{"local":2,"projection":[]},"func":{"Constant":{"const_":{"id":38,"kind":"ZeroSized","ty":76},"span":227,"user_ty":null}},"target":2,"unwind":"Unreachable"}},"span":228}}],"locals":[{"mutability":"Mut","span":230,"ty":61},{"mutability":"Not","span":231,"ty":69},{"mutability":"Not","span":202,"ty":16},{"mutability":"Mut","span":209,"ty":47},{"mutability":"Mut","span":210,"ty":77},{"mutability":"Mut","span":213,"ty":47},{"mutability":"Mut","span":214,"ty":77},{"mutability":"Mut","span":201,"ty":37},{"mutability":"Not","span":223,"ty":8},{"mutability":"Mut","span":224,"ty":56},{"mutability":"Mut","span":215,"ty":65},{"mutability":"Not","span":217,"ty":74},{"mutability":"Mut","span":217,"ty":2},{"mutability":"Mut","span":218,"ty":37},{"mutability":"Mut","span":218,"ty":37},{"mutability":"Mut","span":218,"ty":37}],"span":237,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"layout","source_info":{"scope":0,"span":231},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":1,"composite":null,"name":"src","source_info":{"scope":1,"span":232},"value":{"Const":{"const_":{"id":37,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,7]]}}},"ty":46},"span":233,"user_ty":null}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":5,"span":234},"value":{"Place":{"local":4,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":6,"span":235},"value":{"Place":{"local":6,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":7,"span":236},"value":{"Place":{"local":10,"projection":[]}}}]}],"id":22,"name":"std::alloc::alloc"}},"symbol_name":"_ZN5alloc5alloc5alloc17h214157fcd92df279E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":2,"blocks":[{"statements":[{"kind":{"StorageLive":3},"span":93},{"kind":{"StorageLive":6},"span":93},{"kind":{"StorageLive":5},"span":94},{"kind":{"Assign":[{"local":5,"projection":[]},{"Cast":["PtrToPtr",{"Copy":{"local":1,"projection":[]}},46]}]},"span":95},{"kind":{"Assign":[{"local":6,"projection":[]},{"Cast":["Transmute",{"Copy":{"local":1,"projection":[]}},47]}]},"span":96},{"kind":{"StorageDead":5},"span":94}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":6,"projection":[]}},"targets":{"branches":[[0,3]],"otherwise":4}}},"span":92}},{"statements":[{"kind":{"StorageDead":3},"span":98}],"terminator":{"kind":"Return","span":97}},{"statements":[],"terminator":{"kind":{"Call":{"args":[{"Constant":{"const_":{"id":17,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,0]]}}},"ty":32},"span":100,"user_ty":null}}],"destination":{"local":4,"projection":[]},"func":{"Constant":{"const_":{"id":16,"kind":"ZeroSized","ty":48},"span":99,"user_ty":null}},"target":null,"unwind":"Unreachable"}},"span":101}},{"statements":[{"kind":{"StorageDead":6},"span":93}],"terminator":{"kind":{"Goto":{"target":2}},"span":93}},{"statements":[{"kind":{"StorageLive":9},"span":104}],"terminator":{"kind":{"Call":{"args":[{"Copy":{"local":2,"projection":[]}}],"destination":{"local":9,"projection":[]},"func":{"Constant":{"const_":{"id":18,"kind":"ZeroSized","ty":49},"span":102,"user_ty":null}},"target":7,"unwind":"Unreachable"}},"span":103}},{"statements":[{"kind":{"StorageDead":9},"span":105},{"kind":{"StorageLive":12},"span":106},{"kind":{"StorageLive":13},"span":107},{"kind":{"Assign":[{"local":13,"projection":[]},{"BinaryOp":["Sub",{"Copy":{"local":2,"projection":[]}},{"Constant":{"const_":{"id":19,"kind":{"Allocated":{"align":8,"bytes":[1,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":47},"span":108,"user_ty":null}}]}]},"span":107},{"kind":{"Assign":[{"local":12,"projection":[]},{"BinaryOp":["BitAnd",{"Copy":{"local":6,"projection":[]}},{"Move":{"local":13,"projection":[]}}]}]},"span":106},{"kind":{"StorageDead":13},"span":109},{"kind":{"Assign":[{"local":3,"projection":[]},{"BinaryOp":["Eq",{"Move":{"local":12,"projection":[]}},{"Constant":{"const_":{"id":20,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":47},"span":110,"user_ty":null}}]}]},"span":111},{"kind":{"StorageDead":12},"span":110},{"kind":{"StorageDead":6},"span":93}],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":3,"projection":[]}},"targets":{"branches":[[0,2]],"otherwise":1}}},"span":93}},{"statements":[{"kind":{"StorageDead":9},"span":105},{"kind":{"StorageLive":8},"span":114},{"kind":{"StorageLive":10},"span":115},{"kind":{"Assign":[{"local":10,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Constant":{"const_":{"id":22,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,1]]}}},"ty":51},"span":50,"user_ty":null}},52]}]},"span":115},{"kind":{"StorageLive":11},"span":116},{"kind":{"Assign":[{"local":11,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Constant":{"const_":{"id":23,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,2]]}}},"ty":53},"span":50,"user_ty":null}},54]}]},"span":116},{"kind":{"Assign":[{"local":8,"projection":[]},{"Aggregate":[{"Adt":[13,0,[{"Lifetime":{"kind":"ReErased"}}],null,null]},[{"Move":{"local":10,"projection":[]}},{"Constant":{"const_":{"id":24,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0,null,null,null,null,null,null,null,null],"mutability":"Not","provenance":{"ptrs":[]}}},"ty":55},"span":50,"user_ty":null}},{"Move":{"local":11,"projection":[]}}]]}]},"span":117},{"kind":{"StorageDead":11},"span":118},{"kind":{"StorageDead":10},"span":118}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":8,"projection":[]}}],"destination":{"local":7,"projection":[]},"func":{"Constant":{"const_":{"id":21,"kind":"ZeroSized","ty":50},"span":112,"user_ty":null}},"target":null,"unwind":"Terminate"}},"span":113}},{"statements":[],"terminator":{"kind":{"SwitchInt":{"discr":{"Move":{"local":9,"projection":[]}},"targets":{"branches":[[1,5]],"otherwise":6}}},"span":105}}],"locals":[{"mutability":"Mut","span":119,"ty":8},{"mutability":"Not","span":120,"ty":56},{"mutability":"Not","span":120,"ty":47},{"mutability":"Mut","span":93,"ty":37},{"mutability":"Not","span":101,"ty":27},{"mutability":"Mut","span":95,"ty":46},{"mutability":"Mut","span":121,"ty":47},{"mutability":"Not","span":113,"ty":27},{"mutability":"Mut","span":114,"ty":57},{"mutability":"Mut","span":104,"ty":58},{"mutability":"Mut","span":115,"ty":52},{"mutability":"Mut","span":116,"ty":54},{"mutability":"Mut","span":106,"ty":47},{"mutability":"Mut","span":107,"ty":47}],"span":136,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"addr","source_info":{"scope":0,"span":120},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"align","source_info":{"scope":0,"span":120},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":1,"span":122},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"align","source_info":{"scope":1,"span":123},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":2,"span":124},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":4,"span":125},"value":{"Place":{"local":5,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":5,"span":126},"value":{"Place":{"local":5,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":6,"span":127},"value":{"Place":{"local":5,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":7,"span":128},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"align","source_info":{"scope":7,"span":129},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":8,"span":130},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":9,"span":131},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":10,"span":127},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":1,"composite":null,"name":"pieces","source_info":{"scope":11,"span":132},"value":{"Const":{"const_":{"id":25,"kind":{"Allocated":{"align":8,"bytes":[0,0,0,0,0,0,0,0],"mutability":"Mut","provenance":{"ptrs":[[0,3]]}}},"ty":51},"span":133,"user_ty":null}}},{"argument_index":1,"composite":null,"name":"ptr","source_info":{"scope":12,"span":134},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"align","source_info":{"scope":12,"span":135},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":13,"span":126},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":14,"span":127},"value":{"Place":{"local":1,"projection":[]}}}]}],"id":12,"name":"std::ptr::read_volatile::precondition_check"}},"symbol_name":"_ZN4core3ptr13read_volatile18precondition_check17hc773488a477a662fE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"Assign":[{"local":2,"projection":[]},{"NullaryOp":["SizeOf",32]}]},"span":336},{"kind":{"Assign":[{"local":3,"projection":[]},{"NullaryOp":["AlignOf",32]}]},"span":336}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":2,"projection":[]}},{"Move":{"local":3,"projection":[]}}],"destination":{"local":4,"projection":[]},"func":{"Constant":{"const_":{"id":47,"kind":"ZeroSized","ty":88},"span":336,"user_ty":null}},"target":1,"unwind":{"Cleanup":2}}},"span":336}},{"statements":[{"kind":{"Assign":[{"local":0,"projection":[]},{"ShallowInitBox":[{"Move":{"local":4,"projection":[]}},32]}]},"span":336},{"kind":{"Assign":[{"local":5,"projection":[]},{"Use":{"Copy":{"local":0,"projection":[{"Field":[0,89]},{"Field":[0,90]},{"Field":[0,91]}]}}}]},"span":338},{"kind":{"Assign":[{"local":5,"projection":["Deref"]},{"Use":{"Move":{"local":1,"projection":[]}}}]},"span":338}],"terminator":{"kind":"Return","span":337}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":3,"unwind":"Terminate"}},"span":339}},{"statements":[],"terminator":{"kind":"Resume","span":340}}],"locals":[{"mutability":"Mut","span":341,"ty":92},{"mutability":"Not","span":342,"ty":32},{"mutability":"Mut","span":336,"ty":47},{"mutability":"Mut","span":336,"ty":47},{"mutability":"Mut","span":336,"ty":61},{"mutability":"Mut","span":336,"ty":91}],"span":340,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"x","source_info":{"scope":0,"span":342},"value":{"Place":{"local":1,"projection":[]}}}]}],"id":26,"name":"std::boxed::Box::<&str>::new"}},"symbol_name":"_ZN5alloc5boxed12Box$LT$T$GT$3new17hfb7bad2afdef8431E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Constant":{"const_":{"id":28,"kind":{"Allocated":{"align":1,"bytes":[0],"mutability":"Mut","provenance":{"ptrs":[]}}},"ty":23},"span":160,"user_ty":null}}}]},"span":160}],"terminator":{"kind":"Return","span":159}}],"locals":[{"mutability":"Mut","span":161,"ty":23},{"mutability":"Not","span":162,"ty":8}],"span":163,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"self","source_info":{"scope":0,"span":162},"value":{"Const":{"const_":{"id":6,"kind":"ZeroSized","ty":8},"span":50,"user_ty":null}}}]}],"id":17,"name":"<() as std::process::Termination>::report"}},"symbol_name":"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h6e8cf99dfda5fdefE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":4,"blocks":[{"statements":[{"kind":{"StorageLive":5},"span":19},{"kind":{"StorageLive":6},"span":20},{"kind":{"StorageLive":7},"span":20},{"kind":{"StorageLive":8},"span":21},{"kind":{"Assign":[{"local":8,"projection":[]},{"Aggregate":[{"Closure":[3,[{"Type":8},{"Type":9},{"Type":10},{"Type":11}]]},[{"Copy":{"local":1,"projection":[]}}]]}]},"span":21},{"kind":{"Assign":[{"local":7,"projection":[]},{"Ref":[{"kind":"ReErased"},"Shared",{"local":8,"projection":[]}]}]},"span":20},{"kind":{"Assign":[{"local":6,"projection":[]},{"Cast":[{"PointerCoercion":"Unsize"},{"Move":{"local":7,"projection":[]}},12]}]},"span":20},{"kind":{"StorageDead":7},"span":22}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":6,"projection":[]}},{"Move":{"local":2,"projection":[]}},{"Move":{"local":3,"projection":[]}},{"Move":{"local":4,"projection":[]}}],"destination":{"local":5,"projection":[]},"func":{"Constant":{"const_":{"id":2,"kind":"ZeroSized","ty":7},"span":18,"user_ty":null}},"target":1,"unwind":"Continue"}},"span":19}},{"statements":[{"kind":{"StorageDead":6},"span":24},{"kind":{"Assign":[{"local":0,"projection":[]},{"Use":{"Copy":{"local":5,"projection":[{"Downcast":0},{"Field":[0,13]}]}}}]},"span":25},{"kind":{"StorageDead":8},"span":26},{"kind":{"StorageDead":5},"span":26}],"terminator":{"kind":"Return","span":23}}],"locals":[{"mutability":"Mut","span":27,"ty":13},{"mutability":"Not","span":28,"ty":14},{"mutability":"Not","span":29,"ty":13},{"mutability":"Not","span":30,"ty":15},{"mutability":"Not","span":31,"ty":16},{"mutability":"Mut","span":19,"ty":17},{"mutability":"Mut","span":20,"ty":12},{"mutability":"Mut","span":20,"ty":18},{"mutability":"Not","span":21,"ty":19}],"span":32,"spread_arg":null,"var_debug_info":[{"argument_index":1,"composite":null,"name":"main","source_info":{"scope":0,"span":28},"value":{"Place":{"local":1,"projection":[]}}},{"argument_index":2,"composite":null,"name":"argc","source_info":{"scope":0,"span":29},"value":{"Place":{"local":2,"projection":[]}}},{"argument_index":3,"composite":null,"name":"argv","source_info":{"scope":0,"span":30},"value":{"Place":{"local":3,"projection":[]}}},{"argument_index":4,"composite":null,"name":"sigpipe","source_info":{"scope":0,"span":31},"value":{"Place":{"local":4,"projection":[]}}},{"argument_index":null,"composite":null,"name":"v","source_info":{"scope":1,"span":25},"value":{"Place":{"local":0,"projection":[]}}}]}],"id":2,"name":"std::rt::lang_start::<()>"}},"symbol_name":"_ZN3std2rt10lang_start17hd4017724170dc624E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[],"id":10,"name":"std::intrinsics::type_id::<&str>"}},"symbol_name":"_ZN4core10intrinsics7type_id17h948ad9d7a3771dcdE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[],"terminator":{"kind":"Return","span":137}}],"locals":[{"mutability":"Mut","span":137,"ty":8},{"mutability":"Not","span":137,"ty":43}],"span":137,"spread_arg":null,"var_debug_info":[]}],"id":14,"name":"std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>"}},"symbol_name":"_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h21a5cf619fdd0e23E"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":2,"blocks":[{"statements":[{"kind":{"Assign":[{"local":3,"projection":[]},{"Ref":[{"kind":"ReErased"},{"Mut":{"kind":"Default"}},{"local":1,"projection":[]}]}]},"span":91}],"terminator":{"kind":{"Call":{"args":[{"Move":{"local":3,"projection":[]}},{"Move":{"local":2,"projection":[]}}],"destination":{"local":0,"projection":[]},"func":{"Constant":{"const_":{"id":15,"kind":"ZeroSized","ty":44},"span":91,"user_ty":null}},"target":1,"unwind":{"Cleanup":3}}},"span":91}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":2,"unwind":"Continue"}},"span":91}},{"statements":[],"terminator":{"kind":"Return","span":91}},{"statements":[],"terminator":{"kind":{"Drop":{"place":{"local":1,"projection":[]},"target":4,"unwind":"Terminate"}},"span":91}},{"statements":[],"terminator":{"kind":"Resume","span":91}}],"locals":[{"mutability":"Mut","span":91,"ty":1},{"mutability":"Not","span":91,"ty":19},{"mutability":"Not","span":91,"ty":8},{"mutability":"Not","span":91,"ty":45}],"span":91,"spread_arg":2,"var_debug_info":[]}],"id":11,"name":"<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once"}},"symbol_name":"_ZN4core3ops8function6FnOnce9call_once17h86e2963be1a2fd6aE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":1,"blocks":[{"statements":[],"terminator":{"kind":"Return","span":137}}],"locals":[{"mutability":"Mut","span":137,"ty":8},{"mutability":"Not","span":137,"ty":59}],"span":137,"spread_arg":null,"var_debug_info":[]}],"id":14,"name":"std::ptr::drop_in_place::<&str>"}},"symbol_name":"_ZN4core3ptr28drop_in_place$LT$$RF$str$GT$17h77c483de56b3845cE"},{"details":null,"mono_item_kind":{"MonoItemFn":{"body":[{"arg_count":2,"blocks":[{"statements":[],"terminator":{"kind":{"Call":{"args":[],"destination":{"local":0,"projection":[]},"func":{"Move":{"local":1,"projection":[]}},"target":1,"unwind":"Continue"}},"span":91}},{"statements":[],"terminator":{"kind":"Return","span":91}}],"locals":[{"mutability":"Mut","span":91,"ty":8},{"mutability":"Not","span":91,"ty":14},{"mutability":"Not","span":91,"ty":8}],"span":91,"spread_arg":2,"var_debug_info":[]}],"id":11,"name":">::call_once"}},"symbol_name":"_ZN4core3ops8function6FnOnce9call_once17h11ec6afa27e3d406E"}]} \ No newline at end of file diff --git a/panic_example.smir.json b/panic_example.smir.json new file mode 120000 index 0000000..e509739 --- /dev/null +++ b/panic_example.smir.json @@ -0,0 +1 @@ +tests/integration/programs/panic_example.smir.json.expected \ No newline at end of file diff --git a/tests/integration/normalise-filter.jq b/tests/integration/normalise-filter.jq new file mode 100644 index 0000000..3588770 --- /dev/null +++ b/tests/integration/normalise-filter.jq @@ -0,0 +1,18 @@ +{ allocs: + ( [ .allocs[] ] +# sort allocs by their ID + | sort_by(.[0]) +# TODO this should be removed + | map ( select( .[1] | has("Static") | not ) ) + ), + functions: + ( [ .functions[] ] +# sort functions by their ID (int, first in list) + | sort_by(.[0]) + ), + items: + ( [ .items[] ] +# sort items by symbol name they refer to + | sort_by(.symbol_name) + ) +} \ No newline at end of file diff --git a/tests/integration/programs/panic_example.rs b/tests/integration/programs/panic_example.rs new file mode 100644 index 0000000..c307e16 --- /dev/null +++ b/tests/integration/programs/panic_example.rs @@ -0,0 +1,3 @@ +fn main() { + panic!() +} \ No newline at end of file diff --git a/tests/integration/programs/panic_example.smir.json.expected b/tests/integration/programs/panic_example.smir.json.expected new file mode 100644 index 0000000..aae05d4 --- /dev/null +++ b/tests/integration/programs/panic_example.smir.json.expected @@ -0,0 +1,12772 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "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, + 112, + 116, + 114, + 58, + 58, + 114, + 101, + 97, + 100, + 95, + 118, + 111, + 108, + 97, + 116, + 105, + 108, + 101, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 97, + 114, + 103, + 117, + 109, + 101, + 110, + 116, + 32, + 105, + 115, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 12 + ] + ] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 8, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 13 + ] + ] + } + } + } + ], + [ + 4, + { + "Memory": { + "align": 1, + "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, + 78, + 111, + 110, + 78, + 117, + 108, + 108, + 58, + 58, + 110, + 101, + 119, + 95, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 105, + 115, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 5, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 6, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 8, + { + "Memory": { + "align": 1, + "bytes": [ + 101, + 120, + 112, + 108, + 105, + 99, + 105, + 116, + 32, + 112, + 97, + 110, + 105, + 99 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 12, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 13, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "IntrinsicSym": "type_id" + } + ], + [ + 7, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 20, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h163f76a593f9a61dE" + } + ], + [ + 21, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h6e8cf99dfda5fdefE" + } + ], + [ + 25, + { + "NormalSym": "_ZN3std9panicking11begin_panic28_$u7b$$u7b$closure$u7d$$u7d$17h1ebb1eaab9f30b5aE" + } + ], + [ + 26, + { + "IntrinsicSym": "black_box" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h11ec6afa27e3d406E" + } + ], + [ + 30, + { + "IntrinsicSym": "caller_location" + } + ], + [ + 31, + { + "NormalSym": "_ZN3std3sys9backtrace26__rust_end_short_backtrace17h4bae7cc86322177bE" + } + ], + [ + 36, + { + "NormalSym": "_ZN3std9panicking20rust_panic_with_hook17he6fc28793b894d73E" + } + ], + [ + 42, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h86e2963be1a2fd6aE" + } + ], + [ + 44, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hc407815e8e27866fE" + } + ], + [ + 48, + { + "NormalSym": "_ZN4core9panicking14panic_nounwind17hee6445121510e179E" + } + ], + [ + 49, + { + "IntrinsicSym": "ctpop" + } + ], + [ + 50, + { + "NormalSym": "_ZN4core9panicking9panic_fmt17h8510a50a874ddcc2E" + } + ], + [ + 63, + { + "NormalSym": "_ZN5alloc5alloc6Global10alloc_impl17hfeb4b7829cd89493E" + } + ], + [ + 66, + { + "NormalSym": "_ZN5alloc5alloc18handle_alloc_error17h367988acd01d106aE" + } + ], + [ + 73, + { + "NormalSym": "__rust_alloc" + } + ], + [ + 75, + { + "NormalSym": "_ZN4core3ptr13read_volatile18precondition_check17hc773488a477a662fE" + } + ], + [ + 76, + { + "IntrinsicSym": "volatile_load" + } + ], + [ + 78, + { + "NormalSym": "__rust_alloc_zeroed" + } + ], + [ + 79, + { + "NormalSym": "_ZN5alloc5alloc5alloc17h214157fcd92df279E" + } + ], + [ + 80, + { + "NormalSym": "_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h180abd43edd08785E" + } + ], + [ + 88, + { + "NormalSym": "_ZN5alloc5alloc15exchange_malloc17h5443007c4b77064aE" + } + ], + [ + 93, + { + "NormalSym": "_ZN3std7process5abort17h4d7b628a2864edb7E" + } + ], + [ + 94, + { + "NormalSym": "_ZN3std9panicking14payload_as_str17h5ede2995a2a0c693E" + } + ], + [ + 96, + { + "NormalSym": "_ZN4core3fmt9Formatter9write_str17hd334b351ded225feE" + } + ], + [ + 101, + { + "NormalSym": "_ZN5alloc5boxed12Box$LT$T$GT$3new17hfb7bad2afdef8431E" + } + ], + [ + 112, + { + "NormalSym": "_ZN3std9panicking11begin_panic17h046658c3c0b9185bE" + } + ], + [ + 113, + { + "NoOpSym": "" + } + ], + [ + 114, + { + "NoOpSym": "" + } + ], + [ + 115, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 54, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 8 + ] + ] + } + } + }, + "ty": 32 + }, + "span": 418, + "user_ty": null + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 53, + "kind": "ZeroSized", + "ty": 112 + }, + "span": 417, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 419 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 420, + "ty": 8 + }, + { + "mutability": "Mut", + "span": 419, + "ty": 27 + } + ], + "span": 421, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 31, + "name": "main" + } + }, + "symbol_name": "_ZN13panic_example4main17h1a3a8ec0839c9696E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 4 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Shr", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 1, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 64, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 1 + }, + "span": 5, + "user_ty": null + } + } + ] + } + ] + }, + "span": 4 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 4, + "projection": [] + } + }, + 2 + ] + } + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 7 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 2 + ] + } + ] + }, + "span": 8 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 9 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Copy": { + "local": 5, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 9 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 1, + 0, + [], + null, + null + ] + }, + [ + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 10 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 11 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 2 + } + ], + "terminator": { + "kind": "Return", + "span": 3 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 12, + "ty": 3 + }, + { + "mutability": "Not", + "span": 13, + "ty": 4 + }, + { + "mutability": "Not", + "span": 14, + "ty": 5 + }, + { + "mutability": "Not", + "span": 15, + "ty": 2 + }, + { + "mutability": "Mut", + "span": 4, + "ty": 5 + }, + { + "mutability": "Not", + "span": 16, + "ty": 2 + }, + { + "mutability": "Mut", + "span": 9, + "ty": 6 + } + ], + "span": 17, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "t", + "source_info": { + "scope": 2, + "span": 14 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "t1", + "source_info": { + "scope": 3, + "span": 15 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "t2", + "source_info": { + "scope": 4, + "span": 16 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "<&str as std::any::Any>::type_id" + } + }, + "symbol_name": "_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h5fbaa8559e09a241E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 19 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 20 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 20 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 21 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 3, + [ + { + "Type": 8 + }, + { + "Type": 9 + }, + { + "Type": 10 + }, + { + "Type": 11 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 21 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 20 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 12 + ] + } + ] + }, + "span": 20 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 22 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 7 + }, + "span": 18, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 19 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 13 + ] + } + ] + } + } + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + } + ], + "terminator": { + "kind": "Return", + "span": 23 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 27, + "ty": 13 + }, + { + "mutability": "Not", + "span": 28, + "ty": 14 + }, + { + "mutability": "Not", + "span": 29, + "ty": 13 + }, + { + "mutability": "Not", + "span": 30, + "ty": 15 + }, + { + "mutability": "Not", + "span": 31, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 19, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 20, + "ty": 12 + }, + { + "mutability": "Mut", + "span": 20, + "ty": 18 + }, + { + "mutability": "Not", + "span": 21, + "ty": 19 + } + ], + "span": 32, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 28 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 30 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 31 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 25 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 2, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hd4017724170dc624E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 35 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 34 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 36 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 14 + ] + } + ] + } + } + } + ] + }, + "span": 36 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 33, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 34 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 38 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 37, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 35 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 40 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 41 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 22 + ] + } + ] + } + ] + } + ] + }, + "span": 41 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 42 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 22 + ] + }, + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 42 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 1 + ] + } + ] + }, + "span": 43 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 44 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 45 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 22 + } + ], + "terminator": { + "kind": "Return", + "span": 39 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 46, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 21, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 35, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 34, + "ty": 8 + }, + { + "mutability": "Mut", + "span": 36, + "ty": 14 + }, + { + "mutability": "Mut", + "span": 41, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 42, + "ty": 16 + } + ], + "span": 21, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 28 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 14 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 47 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 48 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 3, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hc407815e8e27866fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 8 + }, + "span": 50, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 49, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 8 + }, + "span": 50, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 52, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 53 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 54 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 55, + "ty": 27 + }, + { + "mutability": "Not", + "span": 56, + "ty": 28 + }, + { + "mutability": "Not", + "span": 57, + "ty": 8 + } + ], + "span": 60, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 56 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 58 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 59 + }, + "value": { + "Const": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 8 + }, + "span": 50, + "user_ty": null + } + } + } + ] + } + ], + "id": 4, + "name": "std::sys::backtrace::__rust_end_short_backtrace::<{closure@std::rt::begin_panic<&str>::{closure#0}}, !>" + } + }, + "symbol_name": "_ZN3std3sys9backtrace26__rust_end_short_backtrace17h4bae7cc86322177bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 8 + }, + "span": 50, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 61, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 8 + }, + "span": 50, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 52, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 53 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 63 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 64, + "ty": 8 + }, + { + "mutability": "Not", + "span": 65, + "ty": 14 + }, + { + "mutability": "Not", + "span": 66, + "ty": 8 + } + ], + "span": 68, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 65 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 67 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 59 + }, + "value": { + "Const": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 8 + }, + "span": 50, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h163f76a593f9a61dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 71 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 69, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 70 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 74 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 7, + [ + { + "Type": 32 + }, + { + "Type": 1 + }, + { + "Type": 33 + }, + { + "Type": 34 + } + ] + ] + }, + [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 74 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 72, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 75, + "ty": 27 + }, + { + "mutability": "Not", + "span": 76, + "ty": 32 + }, + { + "mutability": "Not", + "span": 71, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 28 + } + ], + "span": 77, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "msg", + "source_info": { + "scope": 0, + "span": 76 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "loc", + "source_info": { + "scope": 1, + "span": 71 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "std::rt::begin_panic::<&str>" + } + }, + "symbol_name": "_ZN3std9panicking11begin_panic17h046658c3c0b9185bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 82 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 82 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 32 + ] + } + ] + } + } + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 8, + 1, + [ + { + "Type": 32 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 86 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 9, + 0, + [ + { + "Type": 32 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 83 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 4, + "projection": [] + } + ] + } + ] + }, + "span": 82 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + 38 + ] + } + ] + }, + "span": 82 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 35 + ] + } + ] + } + } + } + ] + }, + "span": 88 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 1 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 37 + }, + "span": 79, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 37 + }, + "span": 80, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 36 + }, + "span": 78, + "user_ty": null + } + }, + "target": null, + "unwind": { + "Cleanup": 1 + } + } + }, + "span": 81 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 4, + "projection": [] + }, + "target": 2, + "unwind": "Terminate" + } + }, + "span": 89 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 74 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 90, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 38 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 83, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 35 + } + ], + "span": 74, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "msg", + "source_info": { + "scope": 0, + "span": 76 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 32 + ] + } + ] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "loc", + "source_info": { + "scope": 0, + "span": 71 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 35 + ] + } + ] + } + } + } + ] + } + ], + "id": 7, + "name": "std::rt::begin_panic::<&str>::{closure#0}" + } + }, + "symbol_name": "_ZN3std9panicking11begin_panic28_$u7b$$u7b$closure$u7d$$u7d$17h1ebb1eaab9f30b5aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [], + "id": 10, + "name": "std::intrinsics::type_id::<&str>" + } + }, + "symbol_name": "_ZN4core10intrinsics7type_id17h948ad9d7a3771dcdE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 42 + }, + "span": 91, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 91 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 91, + "ty": 1 + }, + { + "mutability": "Not", + "span": 91, + "ty": 43 + }, + { + "mutability": "Not", + "span": 91, + "ty": 8 + } + ], + "span": 91, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 11, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h0b6b3134fd4818cdE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 91 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 91, + "ty": 8 + }, + { + "mutability": "Not", + "span": 91, + "ty": 14 + }, + { + "mutability": "Not", + "span": 91, + "ty": 8 + } + ], + "span": 91, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 11, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h11ec6afa27e3d406E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 91 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 15, + "kind": "ZeroSized", + "ty": 44 + }, + "span": 91, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 91 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 91, + "ty": 1 + }, + { + "mutability": "Not", + "span": 91, + "ty": 19 + }, + { + "mutability": "Not", + "span": 91, + "ty": 8 + }, + { + "mutability": "Not", + "span": 91, + "ty": 45 + } + ], + "span": 91, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 11, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h86e2963be1a2fd6aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 46 + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 47 + ] + } + ] + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 94 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 4 + } + } + }, + "span": 92 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 98 + } + ], + "terminator": { + "kind": "Return", + "span": 97 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 110, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 32 + }, + "span": 100, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 16, + "kind": "ZeroSized", + "ty": 48 + }, + "span": 99, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 101 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 93 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 2 + } + }, + "span": 93 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 104 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 18, + "kind": "ZeroSized", + "ty": 49 + }, + "span": 102, + "user_ty": null + } + }, + "target": 7, + "unwind": "Unreachable" + } + }, + "span": 103 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 105 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 106 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 107 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 47 + }, + "span": 108, + "user_ty": null + } + } + ] + } + ] + }, + "span": 107 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 13, + "projection": [] + } + } + ] + } + ] + }, + "span": 106 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 109 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 47 + }, + "span": 110, + "user_ty": null + } + } + ] + } + ] + }, + "span": 111 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 110 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 93 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 93 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 105 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 114 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 115 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 51 + }, + "span": 50, + "user_ty": null + } + }, + 52 + ] + } + ] + }, + "span": 115 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 116 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 53 + }, + "span": 50, + "user_ty": null + } + }, + 54 + ] + } + ] + }, + "span": 116 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 13, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 24, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 55 + }, + "span": 50, + "user_ty": null + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 117 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 118 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 118 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 21, + "kind": "ZeroSized", + "ty": 50 + }, + "span": 112, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 113 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 5 + ] + ], + "otherwise": 6 + } + } + }, + "span": 105 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 119, + "ty": 8 + }, + { + "mutability": "Not", + "span": 120, + "ty": 56 + }, + { + "mutability": "Not", + "span": 120, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 37 + }, + { + "mutability": "Not", + "span": 101, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 95, + "ty": 46 + }, + { + "mutability": "Mut", + "span": 121, + "ty": 47 + }, + { + "mutability": "Not", + "span": 113, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 114, + "ty": 57 + }, + { + "mutability": "Mut", + "span": 104, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 115, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 116, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 106, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 107, + "ty": 47 + } + ], + "span": 136, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 0, + "span": 120 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 120 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 122 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 123 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 124 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 125 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 126 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 127 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 128 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 129 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 130 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 131 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 127 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 132 + }, + "value": { + "Const": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 51 + }, + "span": 133, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 134 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 135 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 126 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 127 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 12, + "name": "std::ptr::read_volatile::precondition_check" + } + }, + "symbol_name": "_ZN4core3ptr13read_volatile18precondition_check17hc773488a477a662fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 137 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 137, + "ty": 8 + }, + { + "mutability": "Not", + "span": 137, + "ty": 59 + } + ], + "span": 137, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 14, + "name": "std::ptr::drop_in_place::<&str>" + } + }, + "symbol_name": "_ZN4core3ptr28drop_in_place$LT$$RF$str$GT$17h77c483de56b3845cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 137 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 137, + "ty": 8 + }, + { + "mutability": "Not", + "span": 137, + "ty": 60 + } + ], + "span": 137, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 14, + "name": "std::ptr::drop_in_place::>" + } + }, + "symbol_name": "_ZN4core3ptr72drop_in_place$LT$std..panicking..begin_panic..Payload$LT$$RF$str$GT$$GT$17h1b47a62f19fbd5f1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 137 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 137, + "ty": 8 + }, + { + "mutability": "Not", + "span": 137, + "ty": 43 + } + ], + "span": 137, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 14, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h21a5cf619fdd0e23E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 139 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 61 + ] + } + ] + }, + "span": 140 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 141 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 47 + ] + } + ] + }, + "span": 142 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 139 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 138 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 138 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 93, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] + ] + } + } + }, + "ty": 32 + }, + "span": 144, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 16, + "kind": "ZeroSized", + "ty": 48 + }, + "span": 143, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 145 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 138 + } + ], + "terminator": { + "kind": "Return", + "span": 146 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 147, + "ty": 8 + }, + { + "mutability": "Not", + "span": 148, + "ty": 62 + }, + { + "mutability": "Not", + "span": 145, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 140, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 141, + "ty": 47 + } + ], + "span": 153, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 0, + "span": 148 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 149 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 2, + "span": 150 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 151 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 152 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 15, + "name": "std::ptr::NonNull::::new_unchecked::precondition_check" + } + }, + "symbol_name": "_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h180abd43edd08785E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 41 + }, + "span": 50, + "user_ty": null + } + } + } + ] + }, + "span": 155 + } + ], + "terminator": { + "kind": "Return", + "span": 154 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 156, + "ty": 41 + }, + { + "mutability": "Not", + "span": 157, + "ty": 39 + } + ], + "span": 158, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 157 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 16, + "name": " as core::panic::PanicPayload>::as_str" + } + }, + "symbol_name": "_ZN4core5panic12PanicPayload6as_str17h34f70170a81b2c4bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 23 + }, + "span": 160, + "user_ty": null + } + } + } + ] + }, + "span": 160 + } + ], + "terminator": { + "kind": "Return", + "span": 159 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 161, + "ty": 23 + }, + { + "mutability": "Not", + "span": 162, + "ty": 8 + } + ], + "span": 163, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 162 + }, + "value": { + "Const": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 8 + }, + "span": 50, + "user_ty": null + } + } + } + ] + } + ], + "id": 17, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h6e8cf99dfda5fdefE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 8 + }, + "span": 167 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 65 + ] + } + ] + }, + "span": 168 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 169 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 170 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 171 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 30, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 5 + ] + ] + } + } + }, + "ty": 64 + }, + "span": 50, + "user_ty": null + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 37 + }, + "span": 165, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 29, + "kind": "ZeroSized", + "ty": 63 + }, + "span": 164, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 166 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 171 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 31, + "kind": "ZeroSized", + "ty": 66 + }, + "span": 172, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 173 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 4, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 67 + ] + } + ] + } + } + } + ] + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 176 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 176 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 0, + 68 + ] + } + ] + } + } + } + ] + }, + "span": 178 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 46 + ] + } + ] + }, + "span": 179 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 20, + 0, + [ + { + "Type": 16 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 10, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 180 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 61 + ] + } + ] + }, + "span": 181 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 182 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 176 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 176 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 183 + } + ], + "terminator": { + "kind": "Return", + "span": 174 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Discriminant": { + "local": 4, + "projection": [] + } + } + ] + }, + "span": 171 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ], + [ + 1, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 184 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 185, + "ty": 61 + }, + { + "mutability": "Not", + "span": 186, + "ty": 47 + }, + { + "mutability": "Not", + "span": 187, + "ty": 47 + }, + { + "mutability": "Not", + "span": 188, + "ty": 69 + }, + { + "mutability": "Mut", + "span": 171, + "ty": 70 + }, + { + "mutability": "Mut", + "span": 189, + "ty": 13 + }, + { + "mutability": "Not", + "span": 175, + "ty": 67 + }, + { + "mutability": "Mut", + "span": 173, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 167, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 179, + "ty": 46 + }, + { + "mutability": "Mut", + "span": 178, + "ty": 68 + } + ], + "span": 200, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 186 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 187 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 1, + "span": 188 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 2, + "span": 175 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 3, + "span": 190 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 3, + "span": 191 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 4, + "span": 192 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 193 + }, + "value": { + "Const": { + "const_": { + "id": 32, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 6 + ] + ] + } + } + }, + "ty": 64 + }, + "span": 194, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 5, + "span": 195 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 196 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 197 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 198 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 199 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 199 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 21, + 0, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 194 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 194 + } + ], + "terminator": { + "kind": "Return", + "span": 194 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 194, + "ty": 64 + }, + { + "mutability": "Mut", + "span": 194, + "ty": 72 + } + ], + "span": 194, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 18, + "name": "alloc::alloc::exchange_malloc" + } + }, + "symbol_name": "_ZN5alloc5alloc15exchange_malloc17h5443007c4b77064aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 202 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 201 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 37 + ] + } + ] + }, + "span": 203 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 3 + } + } + }, + "span": 201 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 205 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 205 + } + ], + "terminator": { + "kind": "Return", + "span": 204 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 208 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 209 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 210 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 210 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 47 + ] + } + ] + } + } + } + ] + }, + "span": 211 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 212 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 213 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 214 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 214 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 215 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 65 + ] + } + ] + } + } + } + ] + }, + "span": 215 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 217 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 74 + ] + } + ] + } + } + } + ] + }, + "span": 217 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Discriminant": { + "local": 11, + "projection": [] + } + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 34, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 2 + }, + "span": 218, + "user_ty": null + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 35, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 2 + }, + "span": 218, + "user_ty": null + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 13, + "projection": [] + } + }, + { + "Move": { + "local": 14, + "projection": [] + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 15, + "projection": [] + } + } + } + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 47 + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 219 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 220 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 221 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 33, + "kind": "ZeroSized", + "ty": 73 + }, + "span": 206, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 207 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 224 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Constant": { + "const_": { + "id": 37, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 46 + }, + "span": 50, + "user_ty": null + } + }, + 56 + ] + } + ] + }, + "span": 224 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 47 + }, + "span": 50, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 36, + "kind": "ZeroSized", + "ty": 75 + }, + "span": 222, + "user_ty": null + } + }, + "target": 4, + "unwind": "Unreachable" + } + }, + "span": 223 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 226 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 225 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 229 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 37, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 46 + }, + "span": 50, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 38, + "kind": "ZeroSized", + "ty": 76 + }, + "span": 227, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 228 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 230, + "ty": 61 + }, + { + "mutability": "Not", + "span": 231, + "ty": 69 + }, + { + "mutability": "Not", + "span": 202, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 209, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 210, + "ty": 77 + }, + { + "mutability": "Mut", + "span": 213, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 214, + "ty": 77 + }, + { + "mutability": "Mut", + "span": 201, + "ty": 37 + }, + { + "mutability": "Not", + "span": 223, + "ty": 8 + }, + { + "mutability": "Mut", + "span": 224, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 215, + "ty": 65 + }, + { + "mutability": "Not", + "span": 217, + "ty": 74 + }, + { + "mutability": "Mut", + "span": 217, + "ty": 2 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + } + ], + "span": 237, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 231 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 1, + "span": 232 + }, + "value": { + "Const": { + "const_": { + "id": 37, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 46 + }, + "span": 233, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 234 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 235 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 236 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + } + ] + } + ], + "id": 22, + "name": "std::alloc::alloc" + } + }, + "symbol_name": "_ZN5alloc5alloc5alloc17h214157fcd92df279E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 239 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 239 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 47 + ] + } + ] + } + } + } + ] + }, + "span": 211 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 240 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 238 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 242 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 241 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 244 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 245 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 246 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 246 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 247 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 215 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 65 + ] + } + ] + } + } + } + ] + }, + "span": 215 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 217 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 19, + "projection": [ + { + "Field": [ + 0, + 74 + ] + } + ] + } + } + } + ] + }, + "span": 217 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Discriminant": { + "local": 20, + "projection": [] + } + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 34, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 2 + }, + "span": 218, + "user_ty": null + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 35, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 2 + }, + "span": 218, + "user_ty": null + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 24, + "projection": [] + } + } + } + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + 47 + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 219 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 23 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 220 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 18, + "projection": [] + } + }, + 61 + ] + } + ] + }, + "span": 248 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 249 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 37 + ] + } + ] + }, + "span": 203 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 25, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 9 + ] + ], + "otherwise": 7 + } + } + }, + "span": 243 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 10 + }, + "span": 252 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [] + } + } + } + ] + }, + "span": 252 + }, + { + "kind": { + "StorageLive": 34 + }, + "span": 253 + }, + { + "kind": { + "Assign": [ + { + "local": 34, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 253 + }, + { + "kind": { + "StorageDead": 34 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 35 + }, + "span": 255 + }, + { + "kind": { + "StorageLive": 36 + }, + "span": 256 + }, + { + "kind": { + "Assign": [ + { + "local": 36, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 256 + }, + { + "kind": { + "StorageLive": 37 + }, + "span": 215 + }, + { + "kind": { + "Assign": [ + { + "local": 37, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 65 + ] + } + ] + } + } + } + ] + }, + "span": 215 + }, + { + "kind": { + "StorageLive": 39 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 40 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 41 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 42 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 38 + }, + "span": 217 + }, + { + "kind": { + "Assign": [ + { + "local": 38, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 37, + "projection": [ + { + "Field": [ + 0, + 74 + ] + } + ] + } + } + } + ] + }, + "span": 217 + }, + { + "kind": { + "Assign": [ + { + "local": 39, + "projection": [] + }, + { + "Discriminant": { + "local": 38, + "projection": [] + } + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 40, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 34, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 2 + }, + "span": 218, + "user_ty": null + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 41, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 35, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 2 + }, + "span": 218, + "user_ty": null + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 42, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 40, + "projection": [] + } + }, + { + "Move": { + "local": 41, + "projection": [] + } + } + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 42, + "projection": [] + } + } + } + }, + "span": 218 + }, + { + "kind": { + "Assign": [ + { + "local": 35, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + 47 + ] + } + ] + }, + "span": 218 + }, + { + "kind": { + "StorageDead": 38 + }, + "span": 219 + }, + { + "kind": { + "StorageDead": 42 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 41 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 40 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 39 + }, + "span": 216 + }, + { + "kind": { + "StorageDead": 37 + }, + "span": 220 + }, + { + "kind": { + "StorageDead": 36 + }, + "span": 257 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 35, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 78 + }, + "span": 250, + "user_ty": null + } + }, + "target": 13, + "unwind": "Unreachable" + } + }, + "span": 251 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 40, + "kind": "ZeroSized", + "ty": 79 + }, + "span": 258, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 259 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 11 + }, + "span": 261 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 262 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 263 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [] + } + } + } + ] + }, + "span": 264 + }, + { + "kind": { + "StorageLive": 44 + }, + "span": 141 + }, + { + "kind": { + "Assign": [ + { + "local": 44, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 47 + ] + } + ] + }, + "span": 142 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 44, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 14 + ] + ], + "otherwise": 15 + } + } + }, + "span": 260 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 265 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 27 + }, + "span": 268 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 268 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 27, + "projection": [] + } + } + ], + "destination": { + "local": 26, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 80 + }, + "span": 266, + "user_ty": null + } + }, + "target": 8, + "unwind": "Unreachable" + } + }, + "span": 267 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 27 + }, + "span": 269 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 46 + ] + } + ] + }, + "span": 270 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 20, + 0, + [ + { + "Type": 16 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 28, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 271 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 272 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 273 + }, + { + "kind": { + "StorageLive": 30 + }, + "span": 274 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [] + } + } + } + ] + }, + "span": 181 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 81, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 47 + }, + "span": 50, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 275 + }, + { + "kind": { + "StorageDead": 30 + }, + "span": 276 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 277 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 10 + } + }, + "span": 243 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 46 + ] + } + ] + }, + "span": 270 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 20, + 0, + [ + { + "Type": 16 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 28, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 271 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 272 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 273 + }, + { + "kind": { + "StorageLive": 30 + }, + "span": 274 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [] + } + } + } + ] + }, + "span": 181 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 81, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 47 + }, + "span": 50, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 275 + }, + { + "kind": { + "StorageDead": 30 + }, + "span": 276 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 277 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 25, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 12 + ] + ], + "otherwise": 10 + } + } + }, + "span": 243 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 32 + }, + "span": 268 + }, + { + "kind": { + "Assign": [ + { + "local": 32, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 268 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 32, + "projection": [] + } + } + ], + "destination": { + "local": 31, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 80 + }, + "span": 266, + "user_ty": null + } + }, + "target": 11, + "unwind": "Unreachable" + } + }, + "span": 267 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 32 + }, + "span": 269 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 12 + } + }, + "span": 278 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 33, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 29, + "projection": [] + } + }, + 68 + ] + } + ] + }, + "span": 270 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 20, + 0, + [ + { + "Type": 81 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 33, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 271 + }, + { + "kind": { + "StorageDead": 33 + }, + "span": 277 + }, + { + "kind": { + "StorageDead": 29 + }, + "span": 280 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 281 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 24, + 0, + [ + { + "Type": 67 + }, + { + "Type": 82 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 282 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 279 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 279 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 35 + }, + "span": 284 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 285 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 283 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 44 + }, + "span": 260 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 42, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 83 + }, + "span": 50, + "user_ty": null + } + } + } + ] + }, + "span": 286 + }, + { + "kind": { + "StorageLive": 49 + }, + "span": 287 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 84 + }, + "span": 50, + "user_ty": null + } + } + } + ] + }, + "span": 288 + }, + { + "kind": { + "StorageDead": 49 + }, + "span": 287 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 289 + }, + { + "kind": { + "StorageLive": 50 + }, + "span": 261 + }, + { + "kind": { + "StorageDead": 50 + }, + "span": 261 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 290 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 44, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 70 + }, + "span": 50, + "user_ty": null + } + } + } + ] + }, + "span": 291 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 292 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 293 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 265 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 44 + }, + "span": 260 + }, + { + "kind": { + "StorageLive": 43 + }, + "span": 294 + }, + { + "kind": { + "StorageLive": 48 + }, + "span": 295 + }, + { + "kind": { + "StorageLive": 45 + }, + "span": 243 + }, + { + "kind": { + "Assign": [ + { + "local": 45, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 37 + ] + } + ] + }, + "span": 203 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 45, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 18 + ] + ], + "otherwise": 16 + } + } + }, + "span": 243 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 47 + }, + "span": 268 + }, + { + "kind": { + "Assign": [ + { + "local": 47, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 268 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 47, + "projection": [] + } + } + ], + "destination": { + "local": 46, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 80 + }, + "span": 266, + "user_ty": null + } + }, + "target": 17, + "unwind": "Unreachable" + } + }, + "span": 267 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 47 + }, + "span": 269 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 18 + } + }, + "span": 278 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 45 + }, + "span": 296 + }, + { + "kind": { + "Assign": [ + { + "local": 48, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 46 + ] + } + ] + }, + "span": 270 + }, + { + "kind": { + "Assign": [ + { + "local": 43, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 20, + 0, + [ + { + "Type": 16 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 48, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 271 + }, + { + "kind": { + "StorageDead": 48 + }, + "span": 295 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 8, + 1, + [ + { + "Type": 71 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 43, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 297 + }, + { + "kind": { + "StorageDead": 43 + }, + "span": 298 + }, + { + "kind": { + "StorageLive": 49 + }, + "span": 287 + }, + { + "kind": { + "Assign": [ + { + "local": 49, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 13, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 71 + ] + } + ] + } + } + } + ] + }, + "span": 299 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 24, + 0, + [ + { + "Type": 71 + }, + { + "Type": 82 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 49, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 300 + }, + { + "kind": { + "StorageDead": 49 + }, + "span": 287 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 289 + }, + { + "kind": { + "StorageLive": 50 + }, + "span": 261 + }, + { + "kind": { + "Assign": [ + { + "local": 50, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 12, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 71 + ] + } + ] + } + } + } + ] + }, + "span": 301 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 85 + }, + { + "Type": 71 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 50, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 302 + }, + { + "kind": { + "StorageDead": 50 + }, + "span": 261 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 290 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 11, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 71 + ] + } + ] + } + } + } + ] + }, + "span": 303 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 292 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 304 + }, + { + "kind": { + "StorageLive": 53 + }, + "span": 304 + }, + { + "kind": { + "StorageLive": 51 + }, + "span": 273 + }, + { + "kind": { + "StorageLive": 52 + }, + "span": 274 + }, + { + "kind": { + "Assign": [ + { + "local": 53, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 46 + ] + } + ] + } + } + } + ] + }, + "span": 178 + }, + { + "kind": { + "Assign": [ + { + "local": 52, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 53, + "projection": [] + } + }, + 61 + ] + } + ] + }, + "span": 181 + }, + { + "kind": { + "Assign": [ + { + "local": 51, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 81, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 52, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 275 + }, + { + "kind": { + "StorageDead": 52 + }, + "span": 276 + }, + { + "kind": { + "StorageLive": 57 + }, + "span": 277 + }, + { + "kind": { + "StorageLive": 54 + }, + "span": 243 + }, + { + "kind": { + "Assign": [ + { + "local": 54, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 37 + ] + } + ] + }, + "span": 203 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 54, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 21 + ] + ], + "otherwise": 19 + } + } + }, + "span": 243 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 56 + }, + "span": 268 + }, + { + "kind": { + "Assign": [ + { + "local": 56, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 53, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 268 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 56, + "projection": [] + } + } + ], + "destination": { + "local": 55, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 80 + }, + "span": 266, + "user_ty": null + } + }, + "target": 20, + "unwind": "Unreachable" + } + }, + "span": 267 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 56 + }, + "span": 269 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 21 + } + }, + "span": 278 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 54 + }, + "span": 296 + }, + { + "kind": { + "Assign": [ + { + "local": 57, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 51, + "projection": [] + } + }, + 68 + ] + } + ] + }, + "span": 270 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 20, + 0, + [ + { + "Type": 81 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 57, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 271 + }, + { + "kind": { + "StorageDead": 57 + }, + "span": 277 + }, + { + "kind": { + "StorageDead": 51 + }, + "span": 280 + }, + { + "kind": { + "StorageDead": 53 + }, + "span": 304 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 24, + 0, + [ + { + "Type": 67 + }, + { + "Type": 82 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 305 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 306 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 293 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 293 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 307, + "ty": 70 + }, + { + "mutability": "Not", + "span": 308, + "ty": 64 + }, + { + "mutability": "Not", + "span": 309, + "ty": 69 + }, + { + "mutability": "Not", + "span": 310, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 311, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 239, + "ty": 77 + }, + { + "mutability": "Mut", + "span": 244, + "ty": 67 + }, + { + "mutability": "Mut", + "span": 245, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 246, + "ty": 77 + }, + { + "mutability": "Not", + "span": 242, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 252, + "ty": 69 + }, + { + "mutability": "Mut", + "span": 261, + "ty": 86 + }, + { + "mutability": "Mut", + "span": 262, + "ty": 84 + }, + { + "mutability": "Mut", + "span": 263, + "ty": 83 + }, + { + "mutability": "Mut", + "span": 264, + "ty": 61 + }, + { + "mutability": "Not", + "span": 303, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 304, + "ty": 67 + }, + { + "mutability": "Mut", + "span": 312, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 247, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 215, + "ty": 65 + }, + { + "mutability": "Not", + "span": 217, + "ty": 74 + }, + { + "mutability": "Mut", + "span": 217, + "ty": 2 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 243, + "ty": 37 + }, + { + "mutability": "Not", + "span": 267, + "ty": 8 + }, + { + "mutability": "Mut", + "span": 268, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 270, + "ty": 46 + }, + { + "mutability": "Mut", + "span": 273, + "ty": 87 + }, + { + "mutability": "Mut", + "span": 274, + "ty": 61 + }, + { + "mutability": "Not", + "span": 267, + "ty": 8 + }, + { + "mutability": "Mut", + "span": 268, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 270, + "ty": 68 + }, + { + "mutability": "Mut", + "span": 253, + "ty": 77 + }, + { + "mutability": "Mut", + "span": 255, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 256, + "ty": 77 + }, + { + "mutability": "Mut", + "span": 215, + "ty": 65 + }, + { + "mutability": "Not", + "span": 217, + "ty": 74 + }, + { + "mutability": "Mut", + "span": 217, + "ty": 2 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 294, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 141, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 243, + "ty": 37 + }, + { + "mutability": "Not", + "span": 267, + "ty": 8 + }, + { + "mutability": "Mut", + "span": 268, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 270, + "ty": 46 + }, + { + "mutability": "Not", + "span": 299, + "ty": 71 + }, + { + "mutability": "Not", + "span": 301, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 273, + "ty": 87 + }, + { + "mutability": "Mut", + "span": 274, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 178, + "ty": 46 + }, + { + "mutability": "Mut", + "span": 243, + "ty": 37 + }, + { + "mutability": "Not", + "span": 267, + "ty": 8 + }, + { + "mutability": "Mut", + "span": 268, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 270, + "ty": 68 + } + ], + "span": 335, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 308 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 309 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "zeroed", + "source_info": { + "scope": 0, + "span": 310 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 313 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "raw_ptr", + "source_info": { + "scope": 2, + "span": 242 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 314 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "residual", + "source_info": { + "scope": 4, + "span": 315 + }, + "value": { + "Const": { + "const_": { + "id": 45, + "kind": "ZeroSized", + "ty": 85 + }, + "span": 50, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "val", + "source_info": { + "scope": 6, + "span": 303 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 234 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 316 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 235 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 236 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 12, + "span": 317 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 13, + "span": 318 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 16, + "span": 319 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 16, + "span": 320 + }, + "value": { + "Const": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 47 + }, + "span": 321, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 199 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 18, + "span": 322 + }, + "value": { + "Place": { + "local": 30, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 18, + "span": 323 + }, + "value": { + "Const": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 47 + }, + "span": 321, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 19, + "span": 324 + }, + "value": { + "Place": { + "local": 30, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 19, + "span": 325 + }, + "value": { + "Const": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 47 + }, + "span": 321, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 20, + "span": 318 + }, + "value": { + "Place": { + "local": 29, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "layout", + "source_info": { + "scope": 23, + "span": 326 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 234 + }, + "value": { + "Place": { + "local": 34, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 25, + "span": 235 + }, + "value": { + "Place": { + "local": 36, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 26, + "span": 236 + }, + "value": { + "Place": { + "local": 37, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 27, + "span": 327 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 28, + "span": 149 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 29, + "span": 150 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 30, + "span": 151 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 31, + "span": 152 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 32, + "span": 318 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 35, + "span": 328 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "err", + "source_info": { + "scope": 35, + "span": 329 + }, + "value": { + "Const": { + "const_": { + "id": 46, + "kind": "ZeroSized", + "ty": 82 + }, + "span": 50, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 36, + "span": 299 + }, + "value": { + "Place": { + "local": 49, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 37, + "span": 330 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 38, + "span": 301 + }, + "value": { + "Place": { + "local": 50, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "e", + "source_info": { + "scope": 39, + "span": 331 + }, + "value": { + "Const": { + "const_": { + "id": 46, + "kind": "ZeroSized", + "ty": 82 + }, + "span": 50, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 40, + "span": 319 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 40, + "span": 320 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 41, + "span": 199 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 42, + "span": 322 + }, + "value": { + "Place": { + "local": 52, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 42, + "span": 323 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 43, + "span": 324 + }, + "value": { + "Place": { + "local": 52, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 43, + "span": 325 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 44, + "span": 318 + }, + "value": { + "Place": { + "local": 51, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "residual", + "source_info": { + "scope": 47, + "span": 332 + }, + "value": { + "Const": { + "const_": { + "id": 45, + "kind": "ZeroSized", + "ty": 85 + }, + "span": 50, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "e", + "source_info": { + "scope": 48, + "span": 333 + }, + "value": { + "Const": { + "const_": { + "id": 46, + "kind": "ZeroSized", + "ty": 82 + }, + "span": 50, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "t", + "source_info": { + "scope": 49, + "span": 334 + }, + "value": { + "Const": { + "const_": { + "id": 46, + "kind": "ZeroSized", + "ty": 82 + }, + "span": 50, + "user_ty": null + } + } + } + ] + } + ], + "id": 23, + "name": "std::alloc::Global::alloc_impl" + } + }, + "symbol_name": "_ZN5alloc5alloc6Global10alloc_impl17hfeb4b7829cd89493E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 32 + ] + } + ] + }, + "span": 336 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 32 + ] + } + ] + }, + "span": 336 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 88 + }, + "span": 336, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 2 + } + } + }, + "span": 336 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "ShallowInitBox": [ + { + "Move": { + "local": 4, + "projection": [] + } + }, + 32 + ] + } + ] + }, + "span": 336 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 0, + "projection": [ + { + "Field": [ + 0, + 89 + ] + }, + { + "Field": [ + 0, + 90 + ] + }, + { + "Field": [ + 0, + 91 + ] + } + ] + } + } + } + ] + }, + "span": 338 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [ + "Deref" + ] + }, + { + "Use": { + "Move": { + "local": 1, + "projection": [] + } + } + } + ] + }, + "span": 338 + } + ], + "terminator": { + "kind": "Return", + "span": 337 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 3, + "unwind": "Terminate" + } + }, + "span": 339 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 340 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 341, + "ty": 92 + }, + { + "mutability": "Not", + "span": 342, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 91 + } + ], + "span": 340, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "x", + "source_info": { + "scope": 0, + "span": 342 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 26, + "name": "std::boxed::Box::<&str>::new" + } + }, + "symbol_name": "_ZN5alloc5boxed12Box$LT$T$GT$3new17hfb7bad2afdef8431E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Discriminant": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + } + ] + } + } + ] + }, + "span": 344 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 343 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 344 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 48, + "kind": "ZeroSized", + "ty": 93 + }, + "span": 345, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 346 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 349 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + }, + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 32 + ] + } + ] + } + ] + } + ] + }, + "span": 349 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 350 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 350 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + }, + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 32 + ] + } + ] + } + ] + } + ] + }, + "span": 350 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 95 + ] + } + ] + }, + "span": 350 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 350 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 49, + "kind": "ZeroSized", + "ty": 94 + }, + "span": 347, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 348 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 353 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 50, + "kind": "ZeroSized", + "ty": 96 + }, + "span": 351, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 352 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 355 + } + ], + "terminator": { + "kind": "Return", + "span": 354 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 356, + "ty": 97 + }, + { + "mutability": "Not", + "span": 357, + "ty": 98 + }, + { + "mutability": "Not", + "span": 358, + "ty": 99 + }, + { + "mutability": "Mut", + "span": 359, + "ty": 13 + }, + { + "mutability": "Not", + "span": 349, + "ty": 4 + }, + { + "mutability": "Not", + "span": 348, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 350, + "ty": 95 + }, + { + "mutability": "Mut", + "span": 350, + "ty": 4 + }, + { + "mutability": "Mut", + "span": 346, + "ty": 27 + } + ], + "span": 360, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 357 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 358 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 349 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + } + ] + } + ], + "id": 27, + "name": " as std::fmt::Display>::fmt" + } + }, + "symbol_name": "_ZN84_$LT$std..panicking..begin_panic..Payload$LT$A$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17h2995801f2bca7f36E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Discriminant": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + } + ] + } + } + ] + }, + "span": 362 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 361 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 362 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 48, + "kind": "ZeroSized", + "ty": 93 + }, + "span": 363, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 364 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 366 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + }, + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 32 + ] + } + ] + } + ] + } + ] + }, + "span": 366 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 367 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + }, + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 32 + ] + } + ] + } + ] + } + ] + }, + "span": 367 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Move": { + "local": 4, + "projection": [] + } + }, + 100 + ] + } + ] + }, + "span": 367 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 367 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 367 + } + ], + "terminator": { + "kind": "Return", + "span": 365 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 368, + "ty": 100 + }, + { + "mutability": "Not", + "span": 369, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 370, + "ty": 13 + }, + { + "mutability": "Not", + "span": 366, + "ty": 4 + }, + { + "mutability": "Mut", + "span": 367, + "ty": 4 + }, + { + "mutability": "Mut", + "span": 364, + "ty": 27 + } + ], + "span": 371, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 369 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 366 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 28, + "name": " as core::panic::PanicPayload>::get" + } + }, + "symbol_name": "_ZN91_$LT$std..panicking..begin_panic..Payload$LT$A$GT$$u20$as$u20$core..panic..PanicPayload$GT$3get17h7e5b46332dff10e9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 373 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 374 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "TwoPhaseBorrow" + } + }, + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + } + ] + } + ] + } + ] + }, + "span": 374 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 8, + 0, + [ + { + "Type": 32 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 375 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 41 + ] + } + ] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [] + } + } + } + ] + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [] + } + } + ] + }, + "span": 373 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 372 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 373 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 48, + "kind": "ZeroSized", + "ty": 93 + }, + "span": 379, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 380 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 2, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 32 + ] + } + ] + } + } + } + ] + }, + "span": 383 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 382 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 51, + "kind": "ZeroSized", + "ty": 101 + }, + "span": 381, + "user_ty": 0 + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 382 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 102 + ] + } + ] + }, + "span": 382 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 385 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 386 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 387 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 387 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 387 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 388 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 30, + 0, + [ + { + "Type": 102 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 389 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 390 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 102 + ] + }, + { + "Field": [ + 0, + 103 + ] + }, + { + "Field": [ + 0, + 104 + ] + } + ] + } + } + } + ] + }, + "span": 391 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 105 + ] + } + ] + } + } + } + ] + }, + "span": 391 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "AddressOf": [ + "Mut", + { + "local": 14, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 391 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 392 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 393 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 393 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 393 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 102 + ] + }, + { + "Field": [ + 1, + 72 + ] + } + ] + } + ] + } + ] + }, + "span": 392 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 394 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 395 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 387 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 387 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 387 + } + ], + "terminator": { + "kind": "Return", + "span": 384 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 396, + "ty": 106 + }, + { + "mutability": "Not", + "span": 397, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 373, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 374, + "ty": 107 + }, + { + "mutability": "Mut", + "span": 398, + "ty": 13 + }, + { + "mutability": "Not", + "span": 383, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 399, + "ty": 102 + }, + { + "mutability": "Mut", + "span": 382, + "ty": 92 + }, + { + "mutability": "Mut", + "span": 380, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 375, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 388, + "ty": 108 + }, + { + "mutability": "Mut", + "span": 390, + "ty": 109 + }, + { + "mutability": "Mut", + "span": 392, + "ty": 110 + }, + { + "mutability": "Mut", + "span": 393, + "ty": 111 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 105 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 104 + } + ], + "span": 416, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 397 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "data", + "source_info": { + "scope": 1, + "span": 401 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 2, + "span": 383 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 402 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dest", + "source_info": { + "scope": 4, + "span": 403 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "src", + "source_info": { + "scope": 4, + "span": 404 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 5, + "span": 405 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 6, + "span": 406 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dst", + "source_info": { + "scope": 7, + "span": 407 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "src", + "source_info": { + "scope": 7, + "span": 408 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "b", + "source_info": { + "scope": 8, + "span": 409 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "b", + "source_info": { + "scope": 9, + "span": 410 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 10, + "span": 388 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 11, + "span": 411 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 12, + "span": 412 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 72 + }, + "span": 50, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "value", + "source_info": { + "scope": 13, + "span": 413 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 414 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 15, + "span": 415 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 16, + "span": 406 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + } + ] + } + ], + "id": 29, + "name": " as core::panic::PanicPayload>::take_box" + } + }, + "symbol_name": "_ZN91_$LT$std..panicking..begin_panic..Payload$LT$A$GT$$u20$as$u20$core..panic..PanicPayload$GT$8take_box17h38a7afb365d90d28E" + } + ] +} From 14876725bf3959ec4bbddc8537a7a825d0186fb3 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Mon, 18 Nov 2024 10:55:54 +1100 Subject: [PATCH 05/12] Clean up toolchain after build (leave runners' rustup in working condition) --- .github/workflows/test.yml | 5 +++++ Makefile | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4fa71b9..402a3d9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -53,3 +53,8 @@ jobs: - name: 'Run smir integration tests' run: | make integration-test + + - name: 'Clean up toolchain' + if: always() + run: | + make rustup-clear-toolchain diff --git a/Makefile b/Makefile index 65ced1a..e6d8c8d 100644 --- a/Makefile +++ b/Makefile @@ -79,6 +79,12 @@ rust_set_toolchain: ${RUST_LIB_DIR} rustup override set "${TOOLCHAIN_NAME}" echo ${STAGE} > ${STAGE_FILE} +.PHONY: rustup-clear-toolchain +rustup-clear-toolchain: + rustup override unset + rustup override unset --nonexistent + rustup toolchain uninstall "${TOOLCHAIN_NAME}" + generate_ui_tests: mkdir -p "${RUST_DIR}"/tests cd "${RUST_SRC}"; ./get_runpass.sh tests/ui > "${RUST_DIR}"/tests_ui_sources From c073a0f59e051af2493823da7bb094aae52a2d6b Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Mon, 18 Nov 2024 11:00:57 +1100 Subject: [PATCH 06/12] Pre-clean runner so the rust installation can go through --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 402a3d9..aa5c647 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,6 +25,9 @@ jobs: ref: ${{ github.event.pull_request.head.sha }} submodules: recursive + - name: "Pre-clean rustup toolchains on runner" + run: rustup toolchain unset --nonexistent + - name: "Set up nightly Rust" # https://github.com/rust-lang/rustup/issues/3409 uses: dtolnay/rust-toolchain@master with: From c68946755837b3b533ad868721b5fa8c256f417b Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Mon, 18 Nov 2024 11:51:41 +1100 Subject: [PATCH 07/12] Revert "Pre-clean runner so the rust installation can go through" This reverts commit c073a0f59e051af2493823da7bb094aae52a2d6b. At that point in the workflow we do not even have `rustup`. --- .github/workflows/test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aa5c647..402a3d9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,9 +25,6 @@ jobs: ref: ${{ github.event.pull_request.head.sha }} submodules: recursive - - name: "Pre-clean rustup toolchains on runner" - run: rustup toolchain unset --nonexistent - - name: "Set up nightly Rust" # https://github.com/rust-lang/rustup/issues/3409 uses: dtolnay/rust-toolchain@master with: From 6833e3cf2b6f1c7a9b14dbe28d95ef83722efc57 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Mon, 18 Nov 2024 13:01:57 +1100 Subject: [PATCH 08/12] add tests from mir-semantics run-rs suite --- tests/integration/programs/array.rs | 5 + .../programs/array.smir.json.expected | 2371 ++ tests/integration/programs/assert_eq.rs | 6 + .../programs/assert_eq.smir.json.expected | 3197 ++ tests/integration/programs/binop.rs | 74 + .../programs/binop.smir.json.expected | 9782 ++++++ tests/integration/programs/box.rs | 9 + .../programs/box.smir.json.expected | 14077 ++++++++ tests/integration/programs/char-trivial.rs | 5 + .../programs/char-trivial.smir.json.expected | 1680 + tests/integration/programs/closure-args.rs | 5 + .../programs/closure-args.smir.json.expected | 1974 ++ tests/integration/programs/closure-no-args.rs | 5 + .../closure-no-args.smir.json.expected | 1794 + .../programs/const-arithm-simple.rs | 12 + .../const-arithm-simple.smir.json.expected | 1937 ++ tests/integration/programs/defined-trait.rs | 19 + .../programs/defined-trait.smir.json.expected | 27726 ++++++++++++++++ .../programs/derive-copy-struct.rs | 19 + .../derive-copy-struct.smir.json.expected | 2580 ++ tests/integration/programs/div.rs | 3 + .../programs/div.smir.json.expected | 2047 ++ .../integration/programs/double-ref-deref.rs | 7 + .../double-ref-deref.smir.json.expected | 1798 + tests/integration/programs/enum.rs | 10 + .../programs/enum.smir.json.expected | 1500 + tests/integration/programs/fibonacci.rs | 13 + .../programs/fibonacci.smir.json.expected | 2355 ++ tests/integration/programs/float.rs | 11 + .../programs/float.smir.json.expected | 2251 ++ tests/integration/programs/generic.rs | 14 + .../programs/generic.smir.json.expected | 3647 ++ tests/integration/programs/modulo.rs | 3 + .../programs/modulo.smir.json.expected | 2045 ++ .../integration/programs/mutual_recursion.rs | 21 + .../mutual_recursion.smir.json.expected | 2309 ++ .../programs/option-construction.rs | 6 + .../option-construction.smir.json.expected | 1838 + .../programs/primitive-type-bounds.rs | 5 + .../primitive-type-bounds.smir.json.expected | 1910 ++ .../programs/recursion-simple-match.rs | 12 + .../recursion-simple-match.smir.json.expected | 2115 ++ .../integration/programs/recursion-simple.rs | 13 + .../recursion-simple.smir.json.expected | 2115 ++ tests/integration/programs/ref-deref.rs | 7 + .../programs/ref-deref.smir.json.expected | 1744 + tests/integration/programs/shl_min.rs | 7 + .../programs/shl_min.smir.json.expected | 3528 ++ tests/integration/programs/slice.rs | 7 + .../programs/slice.smir.json.expected | 4418 +++ .../integration/programs/std-string-empty.rs | 4 + .../std-string-empty.smir.json.expected | 10380 ++++++ tests/integration/programs/std-to-string.rs | 4 + .../programs/std-to-string.smir.json.expected | 27425 +++++++++++++++ tests/integration/programs/str-empty.rs | 5 + .../programs/str-empty.smir.json.expected | 3224 ++ tests/integration/programs/str-trivial.rs | 5 + .../programs/str-trivial.smir.json.expected | 3231 ++ .../integration/programs/strange-ref-deref.rs | 7 + .../strange-ref-deref.smir.json.expected | 1801 + tests/integration/programs/struct.rs | 10 + .../programs/struct.smir.json.expected | 1946 ++ tests/integration/programs/sum-to-n.rs | 23 + .../programs/sum-to-n.smir.json.expected | 2545 ++ tests/integration/programs/tuple-eq.rs | 5 + .../programs/tuple-eq.smir.json.expected | 2622 ++ tests/integration/programs/tuples-simple.rs | 5 + .../programs/tuples-simple.smir.json.expected | 1792 + 68 files changed, 158070 insertions(+) create mode 100644 tests/integration/programs/array.rs create mode 100644 tests/integration/programs/array.smir.json.expected create mode 100644 tests/integration/programs/assert_eq.rs create mode 100644 tests/integration/programs/assert_eq.smir.json.expected create mode 100644 tests/integration/programs/binop.rs create mode 100644 tests/integration/programs/binop.smir.json.expected create mode 100644 tests/integration/programs/box.rs create mode 100644 tests/integration/programs/box.smir.json.expected create mode 100644 tests/integration/programs/char-trivial.rs create mode 100644 tests/integration/programs/char-trivial.smir.json.expected create mode 100644 tests/integration/programs/closure-args.rs create mode 100644 tests/integration/programs/closure-args.smir.json.expected create mode 100644 tests/integration/programs/closure-no-args.rs create mode 100644 tests/integration/programs/closure-no-args.smir.json.expected create mode 100644 tests/integration/programs/const-arithm-simple.rs create mode 100644 tests/integration/programs/const-arithm-simple.smir.json.expected create mode 100644 tests/integration/programs/defined-trait.rs create mode 100644 tests/integration/programs/defined-trait.smir.json.expected create mode 100644 tests/integration/programs/derive-copy-struct.rs create mode 100644 tests/integration/programs/derive-copy-struct.smir.json.expected create mode 100644 tests/integration/programs/div.rs create mode 100644 tests/integration/programs/div.smir.json.expected create mode 100644 tests/integration/programs/double-ref-deref.rs create mode 100644 tests/integration/programs/double-ref-deref.smir.json.expected create mode 100644 tests/integration/programs/enum.rs create mode 100644 tests/integration/programs/enum.smir.json.expected create mode 100644 tests/integration/programs/fibonacci.rs create mode 100644 tests/integration/programs/fibonacci.smir.json.expected create mode 100644 tests/integration/programs/float.rs create mode 100644 tests/integration/programs/float.smir.json.expected create mode 100644 tests/integration/programs/generic.rs create mode 100644 tests/integration/programs/generic.smir.json.expected create mode 100644 tests/integration/programs/modulo.rs create mode 100644 tests/integration/programs/modulo.smir.json.expected create mode 100644 tests/integration/programs/mutual_recursion.rs create mode 100644 tests/integration/programs/mutual_recursion.smir.json.expected create mode 100644 tests/integration/programs/option-construction.rs create mode 100644 tests/integration/programs/option-construction.smir.json.expected create mode 100644 tests/integration/programs/primitive-type-bounds.rs create mode 100644 tests/integration/programs/primitive-type-bounds.smir.json.expected create mode 100644 tests/integration/programs/recursion-simple-match.rs create mode 100644 tests/integration/programs/recursion-simple-match.smir.json.expected create mode 100644 tests/integration/programs/recursion-simple.rs create mode 100644 tests/integration/programs/recursion-simple.smir.json.expected create mode 100644 tests/integration/programs/ref-deref.rs create mode 100644 tests/integration/programs/ref-deref.smir.json.expected create mode 100644 tests/integration/programs/shl_min.rs create mode 100644 tests/integration/programs/shl_min.smir.json.expected create mode 100644 tests/integration/programs/slice.rs create mode 100644 tests/integration/programs/slice.smir.json.expected create mode 100644 tests/integration/programs/std-string-empty.rs create mode 100644 tests/integration/programs/std-string-empty.smir.json.expected create mode 100644 tests/integration/programs/std-to-string.rs create mode 100644 tests/integration/programs/std-to-string.smir.json.expected create mode 100644 tests/integration/programs/str-empty.rs create mode 100644 tests/integration/programs/str-empty.smir.json.expected create mode 100644 tests/integration/programs/str-trivial.rs create mode 100644 tests/integration/programs/str-trivial.smir.json.expected create mode 100644 tests/integration/programs/strange-ref-deref.rs create mode 100644 tests/integration/programs/strange-ref-deref.smir.json.expected create mode 100644 tests/integration/programs/struct.rs create mode 100644 tests/integration/programs/struct.smir.json.expected create mode 100644 tests/integration/programs/sum-to-n.rs create mode 100644 tests/integration/programs/sum-to-n.smir.json.expected create mode 100644 tests/integration/programs/tuple-eq.rs create mode 100644 tests/integration/programs/tuple-eq.smir.json.expected create mode 100644 tests/integration/programs/tuples-simple.rs create mode 100644 tests/integration/programs/tuples-simple.smir.json.expected diff --git a/tests/integration/programs/array.rs b/tests/integration/programs/array.rs new file mode 100644 index 0000000..6c3102e --- /dev/null +++ b/tests/integration/programs/array.rs @@ -0,0 +1,5 @@ +fn main() { + let a = [1, 2, 3, 4]; + + assert!(a == [1, 2, 3, 4]); +} \ No newline at end of file diff --git a/tests/integration/programs/array.smir.json.expected b/tests/integration/programs/array.smir.json.expected new file mode 100644 index 0000000..f7e9fe5 --- /dev/null +++ b/tests/integration/programs/array.smir.json.expected @@ -0,0 +1,2371 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 4, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 61, + 61, + 32, + 91, + 49, + 44, + 32, + 50, + 44, + 32, + 51, + 44, + 32, + 52, + 93 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h38463d653158c251E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h3e77209299d57694E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hedc2c4b05a98cdccE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hfa5d167701988535E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h0a316578559eb371E" + } + ], + [ + 25, + { + "NormalSym": "_ZN69_$LT$T$u20$as$u20$core..array..equality..SpecArrayEq$LT$U$C$_$GT$$GT$7spec_eq17hc18feedbfd2ac264E" + } + ], + [ + 28, + { + "IntrinsicSym": "raw_eq" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core5array8equality103_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u3b$$u20$N$u5d$$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$2eq17h1a7481030a69db91E" + } + ], + [ + 30, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 34, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h83d84ef21d66e568E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h0a316578559eb371E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h38463d653158c251E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hf394d43ed8e21e13E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hedc2c4b05a98cdccE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hfa5d167701988535E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h06536692c0aeb15dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 45, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 46 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 47 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 48, + "ty": 26 + }, + { + "mutability": "Not", + "span": 49, + "ty": 27 + }, + { + "mutability": "Not", + "span": 50, + "ty": 27 + } + ], + "span": 51, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 49 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 50 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 5, + "name": "std::array::equality::::eq" + } + }, + "symbol_name": "_ZN4core5array8equality103_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u3b$$u20$N$u5d$$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$2eq17h1a7481030a69db91E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 53, + "user_ty": null + } + } + } + ] + }, + "span": 53 + } + ], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 54, + "ty": 17 + }, + { + "mutability": "Not", + "span": 55, + "ty": 1 + } + ], + "span": 56, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 55 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 6, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h3e77209299d57694E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Array": 16 + }, + [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 67, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 68, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 69, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 4, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 70, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 71 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 72 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 73, + "user_ty": null + } + } + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 66, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 66 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 66 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 74 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 35, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 31 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 17, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 75, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 75 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 76, + "ty": 1 + }, + { + "mutability": "Not", + "span": 77, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 73, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 75, + "ty": 33 + } + ], + "span": 78, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 77 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Array": 16 + }, + [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 79, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 80, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 81, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 4, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 82, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 73 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": "Return", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 73, + "ty": 32 + } + ], + "span": 73, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 8, + "name": "main" + } + }, + "symbol_name": "_ZN5array4main17h093d1173588c7d34E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 59 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 57, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 58 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 61 + } + ], + "terminator": { + "kind": "Return", + "span": 60 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 62, + "ty": 26 + }, + { + "mutability": "Not", + "span": 63, + "ty": 27 + }, + { + "mutability": "Not", + "span": 64, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 27 + } + ], + "span": 65, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "a", + "source_info": { + "scope": 0, + "span": 63 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "b", + "source_info": { + "scope": 0, + "span": 64 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": ">::spec_eq" + } + }, + "symbol_name": "_ZN69_$LT$T$u20$as$u20$core..array..equality..SpecArrayEq$LT$U$C$_$GT$$GT$7spec_eq17hc18feedbfd2ac264E" + } + ] +} diff --git a/tests/integration/programs/assert_eq.rs b/tests/integration/programs/assert_eq.rs new file mode 100644 index 0000000..f4bb6f3 --- /dev/null +++ b/tests/integration/programs/assert_eq.rs @@ -0,0 +1,6 @@ +fn main() { + let a = 42; + let b = 3 + 39; + + assert_eq!(b, a); +} \ No newline at end of file diff --git a/tests/integration/programs/assert_eq.smir.json.expected b/tests/integration/programs/assert_eq.smir.json.expected new file mode 100644 index 0000000..797bfaf --- /dev/null +++ b/tests/integration/programs/assert_eq.smir.json.expected @@ -0,0 +1,3197 @@ +{ + "allocs": [], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17he770fc9c7f092400E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hb06ebd36cf1fd65bE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h50b93c5bd94e40a8E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3fmt3num50_$LT$impl$u20$core..fmt..Debug$u20$for$u20$i32$GT$3fmt17h57285fb3ede9d01cE" + } + ], + [ + 27, + { + "NormalSym": "_ZN4core3fmt3num53_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$i32$GT$3fmt17h4a52d95dc4574769E" + } + ], + [ + 28, + { + "NormalSym": "_ZN4core3fmt3num53_$LT$impl$u20$core..fmt..UpperHex$u20$for$u20$i32$GT$3fmt17hb461f3a25df6a443E" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h2f0986d8bc27bf03E" + } + ], + [ + 30, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hd98db8d17b807164E" + } + ], + [ + 32, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he87762546545c380E" + } + ], + [ + 35, + { + "NormalSym": "_ZN4core9panicking19assert_failed_inner17hae701ec8e1e0c738E" + } + ], + [ + 41, + { + "NormalSym": "_ZN4core9panicking13assert_failed17ha615b8109eb1d24eE" + } + ], + [ + 45, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hb9da34cecb7084feE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he87762546545c380E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17he770fc9c7f092400E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 44 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 46 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 22 + }, + { + "mutability": "Not", + "span": 48, + "ty": 23 + }, + { + "mutability": "Not", + "span": 49, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 48, + "ty": 25 + } + ], + "span": 50, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 49 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 3, + "name": "<&i32 as std::fmt::Debug>::fmt" + } + }, + "symbol_name": "_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h83cea7bad7f3b5edE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 52 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 53 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 53 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 7, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 16, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ] + } + ] + }, + "span": 52 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 55, + "user_ty": null + } + }, + "target": 6, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 51 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 58 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 32, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ] + } + ] + }, + "span": 58 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 60 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 57 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 61, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 62 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 63, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 64 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 65 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 66 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 67, + "ty": 22 + }, + { + "mutability": "Not", + "span": 68, + "ty": 25 + }, + { + "mutability": "Not", + "span": 69, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 53, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 58, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 26 + } + ], + "span": 72, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 68 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 69 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 70 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 71 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 4, + "name": "core::fmt::num::::fmt" + } + }, + "symbol_name": "_ZN4core3fmt3num50_$LT$impl$u20$core..fmt..Debug$u20$for$u20$i32$GT$3fmt17h57285fb3ede9d01cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 73, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 16 + }, + { + "mutability": "Not", + "span": 73, + "ty": 31 + }, + { + "mutability": "Not", + "span": 73, + "ty": 1 + } + ], + "span": 73, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h4862a9441681ed9cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 1 + }, + { + "mutability": "Not", + "span": 73, + "ty": 7 + }, + { + "mutability": "Not", + "span": 73, + "ty": 1 + } + ], + "span": 73, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h50b93c5bd94e40a8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 73, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 16 + }, + { + "mutability": "Not", + "span": 73, + "ty": 12 + }, + { + "mutability": "Not", + "span": 73, + "ty": 1 + }, + { + "mutability": "Not", + "span": 73, + "ty": 33 + } + ], + "span": 73, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hd98db8d17b807164E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 74 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 74, + "ty": 1 + }, + { + "mutability": "Not", + "span": 74, + "ty": 34 + } + ], + "span": 74, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::<&i32>" + } + }, + "symbol_name": "_ZN4core3ptr28drop_in_place$LT$$RF$i32$GT$17h9641d331670bb7b5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 74 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 74, + "ty": 1 + }, + { + "mutability": "Not", + "span": 74, + "ty": 31 + } + ], + "span": 74, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h4c42ad109c7592a3E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 77 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Move": { + "local": 6, + "projection": [] + } + }, + 36 + ] + } + ] + }, + "span": 77 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 78 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 79 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 79 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 79 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Move": { + "local": 8, + "projection": [] + } + }, + 36 + ] + } + ] + }, + "span": 79 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 80 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 35 + }, + "span": 75, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 76 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 81, + "ty": 37 + }, + { + "mutability": "Not", + "span": 82, + "ty": 38 + }, + { + "mutability": "Not", + "span": 83, + "ty": 25 + }, + { + "mutability": "Not", + "span": 84, + "ty": 25 + }, + { + "mutability": "Not", + "span": 85, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 77, + "ty": 36 + }, + { + "mutability": "Mut", + "span": 77, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 79, + "ty": 36 + }, + { + "mutability": "Mut", + "span": 79, + "ty": 23 + } + ], + "span": 86, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "kind", + "source_info": { + "scope": 0, + "span": 82 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "left", + "source_info": { + "scope": 0, + "span": 83 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "right", + "source_info": { + "scope": 0, + "span": 84 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "args", + "source_info": { + "scope": 0, + "span": 85 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "core::panicking::assert_failed::" + } + }, + "symbol_name": "_ZN4core9panicking13assert_failed17ha615b8109eb1d24eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 88, + "user_ty": null + } + } + } + ] + }, + "span": 88 + } + ], + "terminator": { + "kind": "Return", + "span": 87 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 89, + "ty": 17 + }, + { + "mutability": "Not", + "span": 90, + "ty": 1 + } + ], + "span": 91, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 90 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 8, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hb06ebd36cf1fd65bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 95, + "user_ty": null + } + } + } + ] + }, + "span": 95 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 92, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 39, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 93, + "user_ty": null + } + } + ] + } + ] + }, + "span": 94 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 40 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 92, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 39, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 93, + "user_ty": null + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 94 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 97 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 98 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 99 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 4, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 100 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 4, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 101 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 7, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 102 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 8, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 103 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + } + ] + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 96 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 104 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 10, + 0, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 107 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 0, + [ + { + "Type": 42 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 108 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 12, + "projection": [] + } + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 14, + "projection": [] + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 19, + "kind": "ZeroSized", + "ty": 41 + }, + "span": 105, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 106 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 109, + "ty": 1 + }, + { + "mutability": "Not", + "span": 110, + "ty": 16 + }, + { + "mutability": "Not", + "span": 111, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 97, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 98, + "ty": 25 + }, + { + "mutability": "Not", + "span": 100, + "ty": 25 + }, + { + "mutability": "Not", + "span": 101, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 96, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 102, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 103, + "ty": 16 + }, + { + "mutability": "Not", + "span": 112, + "ty": 38 + }, + { + "mutability": "Not", + "span": 106, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 108, + "ty": 39 + } + ], + "span": 113, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 110 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 111 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "left_val", + "source_info": { + "scope": 3, + "span": 100 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "right_val", + "source_info": { + "scope": 3, + "span": 101 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "kind", + "source_info": { + "scope": 4, + "span": 112 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + } + ] + } + ], + "id": 9, + "name": "main" + } + }, + "symbol_name": "_ZN9assert_eq4main17hfc966d14489c115fE" + } + ] +} diff --git a/tests/integration/programs/binop.rs b/tests/integration/programs/binop.rs new file mode 100644 index 0000000..c132e75 --- /dev/null +++ b/tests/integration/programs/binop.rs @@ -0,0 +1,74 @@ +fn test_binop(x:i32, y:i32) -> () { +// Arithmetic + // Addition + assert!(x + y == 52); + assert!(52 == x + y); + assert!(x + y == y + x); + + // Subtraction + assert!(x - y == 32); + assert!(y - x == -32); + assert!(y - x != x - y); + + // Multiplication + assert!(x * y == 420); + assert!(x * -y == -420); + assert!(-x * y == -420); + assert!(-x * -y == 420); + + // Division + // assert!(420 / 10 == 42); // FAILING SEE div.rs and div.mir + + // Modulo + // assert!(x % 10 == 2); // FAILING SEE modulo.rs and modulo.mir + +// Bitwise + // Xor + assert!(1 ^ 2 == 3); + assert!(1 ^ 3 == 2); + + // Or + assert!(1 | 2 == 3); + assert!(1 | 3 == 3); + + // And + assert!(1 & 2 == 0); + assert!(1 & 3 == 1); + + // // Shl + assert!(2 << 1 == 4); + // assert!(-128_i8 << 1 == 0); FAILS SEE shl_min.rs and shl_min.mir + // assert!(-32768_i16 << 1 == 0); FAILS SEE shl_min.rs and shl_min.mir + // assert!(-2147483648_i32 << 1 == 0); FAILS SEE shl_min.rs and shl_min.mir + // assert!(-9223372036854775808_i64 << 1 == 0); FAILS SEE shl_min.rs and shl_min.mir + // assert!(-17014118346046923173168730371588410572_i128 << 1 == 0); FAILS SEE shl_min.rs and shl_min.mir + + + // // Shr + assert!(2 >> 1 == 1); + assert!(3 >> 1 == 1); + assert!(1 >> 1 == 0); + +// Comparisions + // Less Then + assert!(x < x + y); + + // Less Then or Equal + assert!(x <= x + y); + assert!(x <= x + y - y); + + // Greater Then + assert!(x + y > x); + + // Greater Then or Equal + assert!(x + y >= x); + assert!(x + y - y >= x); +} + + +fn main() { + let x = 42; + let y = 10; + test_binop(x, y); + return (); +} diff --git a/tests/integration/programs/binop.smir.json.expected b/tests/integration/programs/binop.smir.json.expected new file mode 100644 index 0000000..24f52d9 --- /dev/null +++ b/tests/integration/programs/binop.smir.json.expected @@ -0,0 +1,9782 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 43, + 32, + 121, + 32, + 61, + 61, + 32, + 53, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 53, + 50, + 32, + 61, + 61, + 32, + 120, + 32, + 43, + 32, + 121 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 43, + 32, + 121, + 32, + 61, + 61, + 32, + 121, + 32, + 43, + 32, + 120 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 45, + 32, + 121, + 32, + 61, + 61, + 32, + 51, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 4, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 121, + 32, + 45, + 32, + 120, + 32, + 61, + 61, + 32, + 45, + 51, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 5, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 121, + 32, + 45, + 32, + 120, + 32, + 33, + 61, + 32, + 120, + 32, + 45, + 32, + 121 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 6, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 42, + 32, + 121, + 32, + 61, + 61, + 32, + 52, + 50, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 7, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 42, + 32, + 45, + 121, + 32, + 61, + 61, + 32, + 45, + 52, + 50, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 8, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 45, + 120, + 32, + 42, + 32, + 121, + 32, + 61, + 61, + 32, + 45, + 52, + 50, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 9, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 45, + 120, + 32, + 42, + 32, + 45, + 121, + 32, + 61, + 61, + 32, + 52, + 50, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 10, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 49, + 32, + 94, + 32, + 50, + 32, + 61, + 61, + 32, + 51 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 11, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 49, + 32, + 94, + 32, + 51, + 32, + 61, + 61, + 32, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 12, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 49, + 32, + 124, + 32, + 50, + 32, + 61, + 61, + 32, + 51 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 13, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 49, + 32, + 124, + 32, + 51, + 32, + 61, + 61, + 32, + 51 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 14, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 49, + 32, + 38, + 32, + 50, + 32, + 61, + 61, + 32, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 15, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 49, + 32, + 38, + 32, + 51, + 32, + 61, + 61, + 32, + 49 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 16, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 50, + 32, + 60, + 60, + 32, + 49, + 32, + 61, + 61, + 32, + 52 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 17, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 50, + 32, + 62, + 62, + 32, + 49, + 32, + 61, + 61, + 32, + 49 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 18, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 51, + 32, + 62, + 62, + 32, + 49, + 32, + 61, + 61, + 32, + 49 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 19, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 49, + 32, + 62, + 62, + 32, + 49, + 32, + 61, + 61, + 32, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 20, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 60, + 32, + 120, + 32, + 43, + 32, + 121 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 21, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 60, + 61, + 32, + 120, + 32, + 43, + 32, + 121 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 22, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 60, + 61, + 32, + 120, + 32, + 43, + 32, + 121, + 32, + 45, + 32, + 121 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 23, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 43, + 32, + 121, + 32, + 62, + 32, + 120 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 24, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 43, + 32, + 121, + 32, + 62, + 61, + 32, + 120 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 25, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 120, + 32, + 43, + 32, + 121, + 32, + 45, + 32, + 121, + 32, + 62, + 61, + 32, + 120 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17he90aea535f4496f4E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h08eb118021a1dc92E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h58504e9a040c9e4dE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17ha3ed128d842dfdf1E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h51ad69fdc370efa6E" + } + ], + [ + 26, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 31, + { + "NormalSym": "_ZN5binop10test_binop17hbeddbf9d499fdbe1E" + } + ], + [ + 32, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h3ba479a87575e77fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h51ad69fdc370efa6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17he90aea535f4496f4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h667ae919e9ab5bfcE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h58504e9a040c9e4dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17ha3ed128d842dfdf1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h458be6f014adabb4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h08eb118021a1dc92E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 50 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 50 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 50 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 52, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 7, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 53, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 53 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 7, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 52, + 5 + ] + ], + "otherwise": 6 + } + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 55 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 11, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 7, + "unwind": "Continue" + } + }, + "span": 55 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 56, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 11, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 13, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + }, + "target": 8, + "unwind": "Continue" + } + }, + "span": 57 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 13, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Move": { + "local": 12, + "projection": [] + } + } + ] + } + ] + }, + "span": 58 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 10 + ] + ], + "otherwise": 9 + } + } + }, + "span": 58 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 59 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 16, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 11, + "unwind": "Continue" + } + }, + "span": 59 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 14, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 60, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 60 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 16, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 59 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 15, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 32, + 12 + ] + ], + "otherwise": 13 + } + } + }, + "span": 61 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 62 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 19, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + }, + "target": 14, + "unwind": "Continue" + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 17, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 63, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 63 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 19, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 62 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 18, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 4294967264, + 15 + ] + ], + "otherwise": 16 + } + } + }, + "span": 64 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 65 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 23, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + }, + "target": 17, + "unwind": "Continue" + } + }, + "span": 65 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 20, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 66, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 66 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 23, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 65 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 25, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 18, + "unwind": "Continue" + } + }, + "span": 67 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 25, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "BinaryOp": [ + "Ne", + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 24, + "projection": [] + } + } + ] + } + ] + }, + "span": 68 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 21, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 20 + ] + ], + "otherwise": 19 + } + } + }, + "span": 68 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 69 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 28, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Mul", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 21, + "unwind": "Continue" + } + }, + "span": 69 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 5 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 26, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 70, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 70 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 28, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 69 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 27, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 420, + 22 + ] + ], + "otherwise": 23 + } + } + }, + "span": 71 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 32, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 72, + "user_ty": null + } + } + ] + } + ] + }, + "span": 72 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 32, + "projection": [] + } + }, + "expected": false, + "msg": { + "OverflowNeg": { + "Copy": { + "local": 2, + "projection": [] + } + } + }, + "target": 24, + "unwind": "Continue" + } + }, + "span": 72 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 6 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 29, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 73, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 73 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 31, + "projection": [] + }, + { + "UnaryOp": [ + "Neg", + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 72 + }, + { + "kind": { + "Assign": [ + { + "local": 33, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 31, + "projection": [] + } + } + ] + } + ] + }, + "span": 74 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 33, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Mul", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 31, + "projection": [] + } + } + ] + }, + "target": 25, + "unwind": "Continue" + } + }, + "span": 74 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 33, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 74 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 30, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 4294966876, + 26 + ] + ], + "otherwise": 27 + } + } + }, + "span": 75 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 37, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 76, + "user_ty": null + } + } + ] + } + ] + }, + "span": 76 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 37, + "projection": [] + } + }, + "expected": false, + "msg": { + "OverflowNeg": { + "Copy": { + "local": 1, + "projection": [] + } + } + }, + "target": 28, + "unwind": "Continue" + } + }, + "span": 76 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 34, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 77, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 77 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 36, + "projection": [] + }, + { + "UnaryOp": [ + "Neg", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 76 + }, + { + "kind": { + "Assign": [ + { + "local": 38, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Copy": { + "local": 36, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 78 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 38, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Mul", + { + "Move": { + "local": 36, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 29, + "unwind": "Continue" + } + }, + "span": 78 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 35, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 38, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 78 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 35, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 4294966876, + 30 + ] + ], + "otherwise": 31 + } + } + }, + "span": 79 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 42, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 80, + "user_ty": null + } + } + ] + } + ] + }, + "span": 80 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 42, + "projection": [] + } + }, + "expected": false, + "msg": { + "OverflowNeg": { + "Copy": { + "local": 1, + "projection": [] + } + } + }, + "target": 32, + "unwind": "Continue" + } + }, + "span": 80 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 8 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 39, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 81, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 41, + "projection": [] + }, + { + "UnaryOp": [ + "Neg", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 80 + }, + { + "kind": { + "Assign": [ + { + "local": 44, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 82, + "user_ty": null + } + } + ] + } + ] + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 44, + "projection": [] + } + }, + "expected": false, + "msg": { + "OverflowNeg": { + "Copy": { + "local": 2, + "projection": [] + } + } + }, + "target": 33, + "unwind": "Continue" + } + }, + "span": 82 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 43, + "projection": [] + }, + { + "UnaryOp": [ + "Neg", + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 82 + }, + { + "kind": { + "Assign": [ + { + "local": 45, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Copy": { + "local": 41, + "projection": [] + } + }, + { + "Copy": { + "local": 43, + "projection": [] + } + } + ] + } + ] + }, + "span": 83 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 45, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Mul", + { + "Move": { + "local": 41, + "projection": [] + } + }, + { + "Move": { + "local": 43, + "projection": [] + } + } + ] + }, + "target": 34, + "unwind": "Continue" + } + }, + "span": 83 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 40, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 45, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 83 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 40, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 420, + 35 + ] + ], + "otherwise": 36 + } + } + }, + "span": 84 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 47, + "projection": [] + }, + { + "BinaryOp": [ + "BitXor", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 86, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 87, + "user_ty": null + } + } + ] + } + ] + }, + "span": 88 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 47, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 3, + 37 + ] + ], + "otherwise": 38 + } + } + }, + "span": 85 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 9 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 46, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 89, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 89 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 49, + "projection": [] + }, + { + "BinaryOp": [ + "BitXor", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 91, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 92, + "user_ty": null + } + } + ] + } + ] + }, + "span": 93 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 49, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 2, + 39 + ] + ], + "otherwise": 40 + } + } + }, + "span": 90 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 24, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 10 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 48, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 94, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 94 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 51, + "projection": [] + }, + { + "BinaryOp": [ + "BitOr", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 96, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 97, + "user_ty": null + } + } + ] + } + ] + }, + "span": 98 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 51, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 3, + 41 + ] + ], + "otherwise": 42 + } + } + }, + "span": 95 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 11 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 50, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 99, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 99 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 53, + "projection": [] + }, + { + "BinaryOp": [ + "BitOr", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 101, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 102, + "user_ty": null + } + } + ] + } + ] + }, + "span": 103 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 53, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 3, + 43 + ] + ], + "otherwise": 44 + } + } + }, + "span": 100 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 12 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 52, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 104, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 104 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 55, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 106, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 107, + "user_ty": null + } + } + ] + } + ] + }, + "span": 108 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 55, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 45 + ] + ], + "otherwise": 46 + } + } + }, + "span": 105 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 13 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 54, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 109, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 109 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 57, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 111, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 112, + "user_ty": null + } + } + ] + } + ] + }, + "span": 113 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 57, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 47 + ] + ], + "otherwise": 48 + } + } + }, + "span": 110 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 14 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 56, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 114, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 114 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 60, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 116, + "user_ty": null + } + }, + 28 + ] + } + ] + }, + "span": 117 + }, + { + "kind": { + "Assign": [ + { + "local": 61, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 60, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 29, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 32, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 117, + "user_ty": null + } + } + ] + } + ] + }, + "span": 117 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 61, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shl", + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 115, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 116, + "user_ty": null + } + } + ] + }, + "target": 49, + "unwind": "Continue" + } + }, + "span": 117 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 30, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 15 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 58, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 118, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 118 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 59, + "projection": [] + }, + { + "BinaryOp": [ + "Shl", + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 115, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 116, + "user_ty": null + } + } + ] + } + ] + }, + "span": 117 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 59, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 4, + 50 + ] + ], + "otherwise": 51 + } + } + }, + "span": 119 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 64, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 121, + "user_ty": null + } + }, + 28 + ] + } + ] + }, + "span": 122 + }, + { + "kind": { + "Assign": [ + { + "local": 65, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 64, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 29, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 32, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 122, + "user_ty": null + } + } + ] + } + ] + }, + "span": 122 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 65, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shr", + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 120, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 121, + "user_ty": null + } + } + ] + }, + "target": 52, + "unwind": "Continue" + } + }, + "span": 122 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 31, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 16 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 62, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 123, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 123 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 63, + "projection": [] + }, + { + "BinaryOp": [ + "Shr", + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 120, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 121, + "user_ty": null + } + } + ] + } + ] + }, + "span": 122 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 63, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 53 + ] + ], + "otherwise": 54 + } + } + }, + "span": 124 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 68, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 126, + "user_ty": null + } + }, + 28 + ] + } + ] + }, + "span": 127 + }, + { + "kind": { + "Assign": [ + { + "local": 69, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 68, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 29, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 32, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 127, + "user_ty": null + } + } + ] + } + ] + }, + "span": 127 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 69, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shr", + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 125, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 126, + "user_ty": null + } + } + ] + }, + "target": 55, + "unwind": "Continue" + } + }, + "span": 127 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 32, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 17 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 66, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 128, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 128 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 67, + "projection": [] + }, + { + "BinaryOp": [ + "Shr", + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 125, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 126, + "user_ty": null + } + } + ] + } + ] + }, + "span": 127 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 67, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 56 + ] + ], + "otherwise": 57 + } + } + }, + "span": 129 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 72, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 131, + "user_ty": null + } + }, + 28 + ] + } + ] + }, + "span": 132 + }, + { + "kind": { + "Assign": [ + { + "local": 73, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 72, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 29, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 32, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 132, + "user_ty": null + } + } + ] + } + ] + }, + "span": 132 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 73, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shr", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 130, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 131, + "user_ty": null + } + } + ] + }, + "target": 58, + "unwind": "Continue" + } + }, + "span": 132 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 33, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 18 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 70, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 133, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 133 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 71, + "projection": [] + }, + { + "BinaryOp": [ + "Shr", + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 130, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 131, + "user_ty": null + } + } + ] + } + ] + }, + "span": 132 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 71, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 59 + ] + ], + "otherwise": 60 + } + } + }, + "span": 134 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 77, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 135 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 77, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 61, + "unwind": "Continue" + } + }, + "span": 135 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 34, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 19 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 74, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 136, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 136 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 76, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 77, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 135 + }, + { + "kind": { + "Assign": [ + { + "local": 75, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 76, + "projection": [] + } + } + ] + } + ] + }, + "span": 137 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 75, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 63 + ] + ], + "otherwise": 62 + } + } + }, + "span": 137 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 81, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 138 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 81, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 64, + "unwind": "Continue" + } + }, + "span": 138 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 35, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 20 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 78, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 139, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 139 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 80, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 81, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 138 + }, + { + "kind": { + "Assign": [ + { + "local": 79, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 80, + "projection": [] + } + } + ] + } + ] + }, + "span": 140 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 79, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 66 + ] + ], + "otherwise": 65 + } + } + }, + "span": 140 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 86, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 141 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 86, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 67, + "unwind": "Continue" + } + }, + "span": 141 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 36, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 21 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 82, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 142, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 142 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 85, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 86, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 141 + }, + { + "kind": { + "Assign": [ + { + "local": 87, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 85, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 143 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 87, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Move": { + "local": 85, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 68, + "unwind": "Continue" + } + }, + "span": 143 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 84, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 87, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 143 + }, + { + "kind": { + "Assign": [ + { + "local": 83, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 84, + "projection": [] + } + } + ] + } + ] + }, + "span": 144 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 83, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 70 + ] + ], + "otherwise": 69 + } + } + }, + "span": 144 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 91, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 145 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 91, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 71, + "unwind": "Continue" + } + }, + "span": 145 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 37, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 22 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 88, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 146, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 146 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 90, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 91, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 145 + }, + { + "kind": { + "Assign": [ + { + "local": 89, + "projection": [] + }, + { + "BinaryOp": [ + "Gt", + { + "Move": { + "local": 90, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 147 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 89, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 73 + ] + ], + "otherwise": 72 + } + } + }, + "span": 147 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 95, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 148 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 95, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 74, + "unwind": "Continue" + } + }, + "span": 148 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 38, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 23 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 92, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 149, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 149 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 94, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 95, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 148 + }, + { + "kind": { + "Assign": [ + { + "local": 93, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Move": { + "local": 94, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 150 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 93, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 76 + ] + ], + "otherwise": 75 + } + } + }, + "span": 150 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 100, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 151 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 100, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 77, + "unwind": "Continue" + } + }, + "span": 151 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 39, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 24 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 96, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 152, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 152 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 99, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 100, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 151 + }, + { + "kind": { + "Assign": [ + { + "local": 101, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 99, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 153 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 101, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Move": { + "local": 99, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 78, + "unwind": "Continue" + } + }, + "span": 153 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 98, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 101, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 153 + }, + { + "kind": { + "Assign": [ + { + "local": 97, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Move": { + "local": 98, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 154 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 97, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 80 + ] + ], + "otherwise": 79 + } + } + }, + "span": 154 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 155 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 40, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 25 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 102, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 156, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 156 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 157, + "ty": 1 + }, + { + "mutability": "Not", + "span": 158, + "ty": 16 + }, + { + "mutability": "Not", + "span": 159, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 50, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 50, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 53, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 58, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 60, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 63, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 62, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 62, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 65, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 65, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 67, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 67, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 70, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 69, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 69, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 73, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 77, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 78, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 76, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 76, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 78, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 81, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 83, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 80, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 80, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 83, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 89, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 88, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 98, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 104, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 103, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 109, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 108, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 114, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 113, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 118, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 117, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 117, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 117, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 123, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 122, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 122, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 122, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 128, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 127, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 127, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 127, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 133, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 132, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 132, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 132, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 136, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 137, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 135, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 135, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 139, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 140, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 138, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 138, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 142, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 144, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 143, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 141, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 141, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 143, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 146, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 147, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 145, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 145, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 149, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 150, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 148, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 148, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 154, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 153, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 151, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 151, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 153, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 156, + "ty": 30 + } + ], + "span": 160, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "x", + "source_info": { + "scope": 0, + "span": 158 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "y", + "source_info": { + "scope": 0, + "span": 159 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "test_binop" + } + }, + "symbol_name": "_ZN5binop10test_binop17hbeddbf9d499fdbe1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 42, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 163, + "user_ty": null + } + } + } + ] + }, + "span": 164 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 165, + "user_ty": null + } + } + } + ] + }, + "span": 166 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 161, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 162 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 167 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 168, + "ty": 1 + }, + { + "mutability": "Not", + "span": 162, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 164, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 166, + "ty": 16 + } + ], + "span": 171, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "x", + "source_info": { + "scope": 1, + "span": 169 + }, + "value": { + "Const": { + "const_": { + "id": 42, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 163, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "y", + "source_info": { + "scope": 2, + "span": 170 + }, + "value": { + "Const": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 165, + "user_ty": null + } + } + } + ] + } + ], + "id": 7, + "name": "main" + } + }, + "symbol_name": "_ZN5binop4main17h1be5589900968ba9E" + } + ] +} diff --git a/tests/integration/programs/box.rs b/tests/integration/programs/box.rs new file mode 100644 index 0000000..1e93f66 --- /dev/null +++ b/tests/integration/programs/box.rs @@ -0,0 +1,9 @@ +fn main() { + let a = Box::new(5); + let b = Box::new(5); + + assert!(a == b); + assert!(*a == *b); + assert!(*a == 5); + // assert!(a == 5); // Not possible to equate Box::(Type) with Type +} \ No newline at end of file diff --git a/tests/integration/programs/box.smir.json.expected b/tests/integration/programs/box.smir.json.expected new file mode 100644 index 0000000..35ecf5d --- /dev/null +++ b/tests/integration/programs/box.smir.json.expected @@ -0,0 +1,14077 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "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, + 112, + 116, + 114, + 58, + 58, + 114, + 101, + 97, + 100, + 95, + 118, + 111, + 108, + 97, + 116, + 105, + 108, + 101, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 97, + 114, + 103, + 117, + 109, + 101, + 110, + 116, + 32, + 105, + 115, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 16 + ] + ] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 8, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 17 + ] + ] + } + } + } + ], + [ + 4, + { + "Memory": { + "align": 1, + "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, + 78, + 111, + 110, + 78, + 117, + 108, + 108, + 58, + 58, + 110, + 101, + 119, + 95, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 105, + 115, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 5, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 6, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 8, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 61, + 61, + 32, + 98 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 9, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 42, + 97, + 32, + 61, + 61, + 32, + 42, + 98 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 10, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 42, + 97, + 32, + 61, + 61, + 32, + 53 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 16, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 17, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h9eaaee507c2d21d0E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h92da431bec4d0519E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h8e7729f80a58ac71E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 23, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hb15b29e3a14a6765E" + } + ], + [ + 25, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hde9006a0949bffcfE" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core9panicking14panic_nounwind17hee6445121510e179E" + } + ], + [ + 31, + { + "IntrinsicSym": "ctpop" + } + ], + [ + 32, + { + "NormalSym": "_ZN4core9panicking9panic_fmt17h8510a50a874ddcc2E" + } + ], + [ + 45, + { + "NormalSym": "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h326b1277d709d8a8E" + } + ], + [ + 50, + { + "NormalSym": "_ZN5alloc5alloc6Global10alloc_impl17h878684328797f391E" + } + ], + [ + 53, + { + "NormalSym": "_ZN5alloc5alloc18handle_alloc_error17h367988acd01d106aE" + } + ], + [ + 60, + { + "NormalSym": "__rust_alloc" + } + ], + [ + 63, + { + "NormalSym": "_ZN4core3ptr13read_volatile18precondition_check17hd083d5824be049beE" + } + ], + [ + 64, + { + "IntrinsicSym": "volatile_load" + } + ], + [ + 66, + { + "NormalSym": "__rust_alloc_zeroed" + } + ], + [ + 67, + { + "NormalSym": "_ZN5alloc5alloc5alloc17h0f1941cd38b492e0E" + } + ], + [ + 68, + { + "NormalSym": "_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h577e370d545c7763E" + } + ], + [ + 76, + { + "NormalSym": "_ZN5alloc5alloc15exchange_malloc17h5e6611a095512e8fE" + } + ], + [ + 78, + { + "NormalSym": "__rust_dealloc" + } + ], + [ + 79, + { + "NormalSym": "_ZN4core3cmp5impls54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$i32$GT$2eq17hb8ea1a8a8ce8e611E" + } + ], + [ + 81, + { + "IntrinsicSym": "size_of_val" + } + ], + [ + 83, + { + "NormalSym": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h31446c1bb7428470E" + } + ], + [ + 84, + { + "IntrinsicSym": "min_align_of_val" + } + ], + [ + 87, + { + "NormalSym": "_ZN5alloc5boxed12Box$LT$T$GT$3new17hb7b054b22201ca41E" + } + ], + [ + 88, + { + "NormalSym": "_ZN71_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17he8355580e493ee18E" + } + ], + [ + 89, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 90, + { + "NoOpSym": "" + } + ], + [ + 91, + { + "NormalSym": "_ZN4core3ptr49drop_in_place$LT$alloc..boxed..Box$LT$i32$GT$$GT$17hba8e3b90af82b457E" + } + ], + [ + 92, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 48, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 5, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 368, + "user_ty": null + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 367, + "user_ty": 0 + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 369 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 48, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 5, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 371, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 370, + "user_ty": 1 + } + }, + "target": 2, + "unwind": { + "Cleanup": 13 + } + } + }, + "span": 372 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 374 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 375 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 49, + "kind": "ZeroSized", + "ty": 88 + }, + "span": 373, + "user_ty": null + } + }, + "target": 3, + "unwind": { + "Cleanup": 12 + } + } + }, + "span": 373 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 4 + } + } + }, + "span": 373 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 0, + 43 + ] + }, + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 13, + "projection": [] + } + }, + 38 + ] + } + ] + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 28, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 16 + ] + } + ] + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 31, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 30, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 376, + "user_ty": null + } + } + ] + } + ] + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 32, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 29, + "projection": [] + } + }, + { + "Copy": { + "local": 31, + "projection": [] + } + } + ] + } + ] + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 33, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 32, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 376, + "user_ty": null + } + } + ] + } + ] + }, + "span": 376 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Copy": { + "local": 33, + "projection": [] + } + }, + "expected": true, + "msg": { + "MisalignedPointerDereference": { + "found": { + "Copy": { + "local": 29, + "projection": [] + } + }, + "required": { + "Copy": { + "local": 30, + "projection": [] + } + } + } + }, + "target": 17, + "unwind": "Unreachable" + } + }, + "span": 376 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 51, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 8 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 50, + "kind": "ZeroSized", + "ty": 89 + }, + "span": 377, + "user_ty": null + } + }, + "target": null, + "unwind": { + "Cleanup": 12 + } + } + }, + "span": 377 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 0, + 43 + ] + }, + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 15, + "projection": [] + } + }, + 38 + ] + } + ] + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 16, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 16 + ] + } + ] + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 18, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 378, + "user_ty": null + } + } + ] + } + ] + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Copy": { + "local": 19, + "projection": [] + } + } + ] + } + ] + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 20, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 378, + "user_ty": null + } + } + ] + } + ] + }, + "span": 378 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Copy": { + "local": 21, + "projection": [] + } + }, + "expected": true, + "msg": { + "MisalignedPointerDereference": { + "found": { + "Copy": { + "local": 17, + "projection": [] + } + }, + "required": { + "Copy": { + "local": 18, + "projection": [] + } + } + } + }, + "target": 15, + "unwind": "Unreachable" + } + }, + "span": 378 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 52, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 9 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 50, + "kind": "ZeroSized", + "ty": 89 + }, + "span": 379, + "user_ty": null + } + }, + "target": null, + "unwind": { + "Cleanup": 12 + } + } + }, + "span": 379 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 2, + "projection": [] + }, + "target": 10, + "unwind": { + "Cleanup": 13 + } + } + }, + "span": 380 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 10 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 50, + "kind": "ZeroSized", + "ty": 89 + }, + "span": 381, + "user_ty": null + } + }, + "target": null, + "unwind": { + "Cleanup": 12 + } + } + }, + "span": 381 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 11, + "unwind": "Continue" + } + }, + "span": 380 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 382 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 2, + "projection": [] + }, + "target": 13, + "unwind": "Terminate" + } + }, + "span": 380 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 14, + "unwind": "Terminate" + } + }, + "span": 380 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 383 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 378 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 11, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 5, + 8 + ] + ], + "otherwise": 9 + } + } + }, + "span": 384 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 14, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 386 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + } + ] + } + ] + }, + "span": 385 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 7 + ] + ], + "otherwise": 6 + } + } + }, + "span": 385 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 13, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 0, + 43 + ] + }, + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 386 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 38 + ] + } + ] + }, + "span": 386 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 22, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 386 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 16 + ] + } + ] + }, + "span": 386 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 24, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 386, + "user_ty": null + } + } + ] + } + ] + }, + "span": 386 + }, + { + "kind": { + "Assign": [ + { + "local": 26, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 23, + "projection": [] + } + }, + { + "Copy": { + "local": 25, + "projection": [] + } + } + ] + } + ] + }, + "span": 386 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 26, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 386, + "user_ty": null + } + } + ] + } + ] + }, + "span": 386 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Copy": { + "local": 27, + "projection": [] + } + }, + "expected": true, + "msg": { + "MisalignedPointerDereference": { + "found": { + "Copy": { + "local": 23, + "projection": [] + } + }, + "required": { + "Copy": { + "local": 24, + "projection": [] + } + } + } + }, + "target": 16, + "unwind": "Unreachable" + } + }, + "span": 386 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 387, + "ty": 1 + }, + { + "mutability": "Not", + "span": 388, + "ty": 77 + }, + { + "mutability": "Not", + "span": 389, + "ty": 77 + }, + { + "mutability": "Mut", + "span": 373, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 374, + "ty": 80 + }, + { + "mutability": "Mut", + "span": 375, + "ty": 80 + }, + { + "mutability": "Mut", + "span": 377, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 385, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 386, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 379, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 378, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 381, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 388, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 389, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 388, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 378, + "ty": 38 + }, + { + "mutability": "Mut", + "span": 378, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 378, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 378, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 378, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 378, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 386, + "ty": 38 + }, + { + "mutability": "Mut", + "span": 386, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 386, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 386, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 386, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 386, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 38 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 21 + } + ], + "span": 383, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 388 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 389 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 25, + "name": "main" + } + }, + "symbol_name": "_ZN3box4main17ha8a3550617341dbeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hfde27f23de2c91dcE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hde9006a0949bffcfE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h9eaaee507c2d21d0E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [], + "id": 3, + "name": "std::intrinsics::size_of_val::" + } + }, + "symbol_name": "_ZN4core10intrinsics11size_of_val17h7b6b24fed39c5d75E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [], + "id": 4, + "name": "std::intrinsics::min_align_of_val::" + } + }, + "symbol_name": "_ZN4core10intrinsics16min_align_of_val17h490053aac5bf90ebE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 44 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 44 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 45 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 46 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 47 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 47 + } + ], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 48, + "ty": 21 + }, + { + "mutability": "Not", + "span": 49, + "ty": 22 + }, + { + "mutability": "Not", + "span": 50, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 44, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 45, + "ty": 16 + } + ], + "span": 51, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 49 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 50 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 5, + "name": "std::cmp::impls::::eq" + } + }, + "symbol_name": "_ZN4core3cmp5impls54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$i32$GT$2eq17hb8ea1a8a8ce8e611E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 52, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Not", + "span": 52, + "ty": 24 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 6, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hb9952c72c6f60b94E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 52, + "ty": 7 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 6, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h8e7729f80a58ac71E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 52, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Not", + "span": 52, + "ty": 12 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 52, + "ty": 26 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 6, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hb15b29e3a14a6765E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 54 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 54 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 57 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 55 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 4 + } + } + }, + "span": 53 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 59 + } + ], + "terminator": { + "kind": "Return", + "span": 58 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 110, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 61, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 60, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 62 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 2 + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 65 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 63, + "user_ty": null + } + }, + "target": 7, + "unwind": "Unreachable" + } + }, + "span": 64 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 66 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 67 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 69, + "user_ty": null + } + } + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 13, + "projection": [] + } + } + ] + } + ] + }, + "span": 67 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 70 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 71, + "user_ty": null + } + } + ] + } + ] + }, + "span": 72 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 71 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 66 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 75 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 76 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 33 + }, + "span": 32, + "user_ty": null + } + }, + 34 + ] + } + ] + }, + "span": 76 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 35 + }, + "span": 32, + "user_ty": null + } + }, + 36 + ] + } + ] + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 8, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 37 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 78 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 79 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 79 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 73, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 74 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 5 + ] + ], + "otherwise": 6 + } + } + }, + "span": 66 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 80, + "ty": 1 + }, + { + "mutability": "Not", + "span": 81, + "ty": 38 + }, + { + "mutability": "Not", + "span": 81, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 21 + }, + { + "mutability": "Not", + "span": 62, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 28 + }, + { + "mutability": "Not", + "span": 74, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 75, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 65, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 76, + "ty": 34 + }, + { + "mutability": "Mut", + "span": 77, + "ty": 36 + }, + { + "mutability": "Mut", + "span": 67, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 28 + } + ], + "span": 97, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 0, + "span": 81 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 81 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 83 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 84 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 85 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 86 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 87 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 88 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 89 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 90 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 91 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 92 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 88 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 93 + }, + "value": { + "Const": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 33 + }, + "span": 94, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 95 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 96 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 87 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 88 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "std::ptr::read_volatile::precondition_check" + } + }, + "symbol_name": "_ZN4core3ptr13read_volatile18precondition_check17hd083d5824be049beE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "CopyForDeref": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 0, + 43 + ] + }, + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + ] + }, + "span": 98 + } + ], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 6, + "projection": [ + "Deref" + ] + }, + "target": 3, + "unwind": { + "Cleanup": 4 + } + } + }, + "span": 98 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 98 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 98 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 98 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 18, + "kind": "ZeroSized", + "ty": 45 + }, + "span": 98, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 98 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 98 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 18, + "kind": "ZeroSized", + "ty": 45 + }, + "span": 98, + "user_ty": null + } + }, + "target": 1, + "unwind": "Terminate" + } + }, + "span": 98 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 98, + "ty": 1 + }, + { + "mutability": "Not", + "span": 98, + "ty": 46 + }, + { + "mutability": "Mut", + "span": 98, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 98, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 98, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 98, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 98, + "ty": 44 + } + ], + "span": 98, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 9, + "name": "std::ptr::drop_in_place::>" + } + }, + "symbol_name": "_ZN4core3ptr49drop_in_place$LT$alloc..boxed..Box$LT$i32$GT$$GT$17hba8e3b90af82b457E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 98 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 98, + "ty": 1 + }, + { + "mutability": "Not", + "span": 98, + "ty": 24 + } + ], + "span": 98, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 9, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h7f9f1789552be433E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 100 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 48 + ] + } + ] + }, + "span": 101 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 102 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 103 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 100 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 99 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 99 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 93, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 105, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 104, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 106 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 99 + } + ], + "terminator": { + "kind": "Return", + "span": 107 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 108, + "ty": 1 + }, + { + "mutability": "Not", + "span": 109, + "ty": 49 + }, + { + "mutability": "Not", + "span": 106, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 101, + "ty": 48 + }, + { + "mutability": "Mut", + "span": 102, + "ty": 28 + } + ], + "span": 114, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 0, + "span": 109 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 110 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 2, + "span": 111 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 112 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 113 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 10, + "name": "std::ptr::NonNull::::new_unchecked::precondition_check" + } + }, + "symbol_name": "_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h577e370d545c7763E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 116, + "user_ty": null + } + } + } + ] + }, + "span": 116 + } + ], + "terminator": { + "kind": "Return", + "span": 115 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 117, + "ty": 17 + }, + { + "mutability": "Not", + "span": 118, + "ty": 1 + } + ], + "span": 119, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 118 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 11, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h92da431bec4d0519E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 8 + }, + "span": 123 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 52 + ] + } + ] + }, + "span": 124 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 13, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 125 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 126 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 127 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 5 + ] + ] + } + } + }, + "ty": 51 + }, + "span": 32, + "user_ty": null + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 21 + }, + "span": 121, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 21, + "kind": "ZeroSized", + "ty": 50 + }, + "span": 120, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 122 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 127 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 24, + "kind": "ZeroSized", + "ty": 53 + }, + "span": 128, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 129 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 4, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 54 + ] + } + ] + } + } + } + ] + }, + "span": 131 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 132 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 132 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 133 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 0, + 55 + ] + } + ] + } + } + } + ] + }, + "span": 134 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 135 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 10, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 136 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 48 + ] + } + ] + }, + "span": 137 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 138 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 132 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 132 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 139 + } + ], + "terminator": { + "kind": "Return", + "span": 130 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Discriminant": { + "local": 4, + "projection": [] + } + } + ] + }, + "span": 127 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ], + [ + 1, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 140 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 141, + "ty": 48 + }, + { + "mutability": "Not", + "span": 142, + "ty": 28 + }, + { + "mutability": "Not", + "span": 143, + "ty": 28 + }, + { + "mutability": "Not", + "span": 144, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 127, + "ty": 57 + }, + { + "mutability": "Mut", + "span": 145, + "ty": 6 + }, + { + "mutability": "Not", + "span": 131, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 129, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 123, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 133, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 135, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 134, + "ty": 55 + } + ], + "span": 156, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 142 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 143 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 1, + "span": 144 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 2, + "span": 131 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 3, + "span": 146 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 3, + "span": 147 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 4, + "span": 148 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 149 + }, + "value": { + "Const": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 6 + ] + ] + } + } + }, + "ty": 51 + }, + "span": 150, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 5, + "span": 151 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 152 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 153 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 154 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 155 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 155 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 15, + 0, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 150 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 150 + } + ], + "terminator": { + "kind": "Return", + "span": 150 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 150, + "ty": 51 + }, + { + "mutability": "Mut", + "span": 150, + "ty": 59 + } + ], + "span": 150, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "alloc::alloc::exchange_malloc" + } + }, + "symbol_name": "_ZN5alloc5alloc15exchange_malloc17h5e6611a095512e8fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 158 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 157 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 21 + ] + } + ] + }, + "span": 159 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 3 + } + } + }, + "span": 157 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 161 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 161 + } + ], + "terminator": { + "kind": "Return", + "span": 160 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 164 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 165 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 166 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 166 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 167 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 168 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 169 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 170 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 170 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 171 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 52 + ] + } + ] + } + } + } + ] + }, + "span": 171 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 173 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 61 + ] + } + ] + } + } + } + ] + }, + "span": 173 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Discriminant": { + "local": 11, + "projection": [] + } + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 62 + }, + "span": 174, + "user_ty": null + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 62 + }, + "span": 174, + "user_ty": null + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 13, + "projection": [] + } + }, + { + "Move": { + "local": 14, + "projection": [] + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 15, + "projection": [] + } + } + } + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 176 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 177 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 26, + "kind": "ZeroSized", + "ty": 60 + }, + "span": 162, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 163 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 180 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Constant": { + "const_": { + "id": 30, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + }, + 38 + ] + } + ] + }, + "span": 180 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 29, + "kind": "ZeroSized", + "ty": 63 + }, + "span": 178, + "user_ty": null + } + }, + "target": 4, + "unwind": "Unreachable" + } + }, + "span": 179 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 182 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 181 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 185 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 30, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 31, + "kind": "ZeroSized", + "ty": 64 + }, + "span": 183, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 184 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 186, + "ty": 48 + }, + { + "mutability": "Not", + "span": 187, + "ty": 56 + }, + { + "mutability": "Not", + "span": 158, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 165, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 166, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 169, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 170, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 157, + "ty": 21 + }, + { + "mutability": "Not", + "span": 179, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 180, + "ty": 38 + }, + { + "mutability": "Mut", + "span": 171, + "ty": 52 + }, + { + "mutability": "Not", + "span": 173, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 173, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + } + ], + "span": 193, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 187 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 1, + "span": 188 + }, + "value": { + "Const": { + "const_": { + "id": 30, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 189, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 190 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 191 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 192 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + } + ] + } + ], + "id": 16, + "name": "std::alloc::alloc" + } + }, + "symbol_name": "_ZN5alloc5alloc5alloc17h0f1941cd38b492e0E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 195 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 195 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 167 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 196 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 194 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 198 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 197 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 200 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 201 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 202 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 202 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 203 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 171 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 52 + ] + } + ] + } + } + } + ] + }, + "span": 171 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 173 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 19, + "projection": [ + { + "Field": [ + 0, + 61 + ] + } + ] + } + } + } + ] + }, + "span": 173 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Discriminant": { + "local": 20, + "projection": [] + } + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 62 + }, + "span": 174, + "user_ty": null + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 62 + }, + "span": 174, + "user_ty": null + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 24, + "projection": [] + } + } + } + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 23 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 18, + "projection": [] + } + }, + 48 + ] + } + ] + }, + "span": 204 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 205 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 21 + ] + } + ] + }, + "span": 159 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 25, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 9 + ] + ], + "otherwise": 7 + } + } + }, + "span": 199 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 10 + }, + "span": 208 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [] + } + } + } + ] + }, + "span": 208 + }, + { + "kind": { + "StorageLive": 34 + }, + "span": 209 + }, + { + "kind": { + "Assign": [ + { + "local": 34, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 209 + }, + { + "kind": { + "StorageDead": 34 + }, + "span": 210 + }, + { + "kind": { + "StorageLive": 35 + }, + "span": 211 + }, + { + "kind": { + "StorageLive": 36 + }, + "span": 212 + }, + { + "kind": { + "Assign": [ + { + "local": 36, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 212 + }, + { + "kind": { + "StorageLive": 37 + }, + "span": 171 + }, + { + "kind": { + "Assign": [ + { + "local": 37, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 52 + ] + } + ] + } + } + } + ] + }, + "span": 171 + }, + { + "kind": { + "StorageLive": 39 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 40 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 41 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 42 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 38 + }, + "span": 173 + }, + { + "kind": { + "Assign": [ + { + "local": 38, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 37, + "projection": [ + { + "Field": [ + 0, + 61 + ] + } + ] + } + } + } + ] + }, + "span": 173 + }, + { + "kind": { + "Assign": [ + { + "local": 39, + "projection": [] + }, + { + "Discriminant": { + "local": 38, + "projection": [] + } + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 40, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 62 + }, + "span": 174, + "user_ty": null + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 41, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 62 + }, + "span": 174, + "user_ty": null + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 42, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 40, + "projection": [] + } + }, + { + "Move": { + "local": 41, + "projection": [] + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 42, + "projection": [] + } + } + } + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 35, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "StorageDead": 38 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 42 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 41 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 40 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 39 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 37 + }, + "span": 176 + }, + { + "kind": { + "StorageDead": 36 + }, + "span": 213 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 35, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 32, + "kind": "ZeroSized", + "ty": 66 + }, + "span": 206, + "user_ty": null + } + }, + "target": 13, + "unwind": "Unreachable" + } + }, + "span": 207 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 33, + "kind": "ZeroSized", + "ty": 67 + }, + "span": 214, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 215 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 11 + }, + "span": 217 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 218 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 219 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [] + } + } + } + ] + }, + "span": 220 + }, + { + "kind": { + "StorageLive": 44 + }, + "span": 102 + }, + { + "kind": { + "Assign": [ + { + "local": 44, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 103 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 44, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 14 + ] + ], + "otherwise": 15 + } + } + }, + "span": 216 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 221 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 27 + }, + "span": 224 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 49 + ] + } + ] + }, + "span": 224 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 27, + "projection": [] + } + } + ], + "destination": { + "local": 26, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 34, + "kind": "ZeroSized", + "ty": 68 + }, + "span": 222, + "user_ty": null + } + }, + "target": 8, + "unwind": "Unreachable" + } + }, + "span": 223 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 27 + }, + "span": 225 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 226 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 28, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 227 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 228 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 229 + }, + { + "kind": { + "StorageLive": 30 + }, + "span": 230 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [] + } + } + } + ] + }, + "span": 137 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 69, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 231 + }, + { + "kind": { + "StorageDead": 30 + }, + "span": 232 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 233 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 10 + } + }, + "span": 199 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 226 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 28, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 227 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 228 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 229 + }, + { + "kind": { + "StorageLive": 30 + }, + "span": 230 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [] + } + } + } + ] + }, + "span": 137 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 69, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 231 + }, + { + "kind": { + "StorageDead": 30 + }, + "span": 232 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 233 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 25, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 12 + ] + ], + "otherwise": 10 + } + } + }, + "span": 199 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 32 + }, + "span": 224 + }, + { + "kind": { + "Assign": [ + { + "local": 32, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 49 + ] + } + ] + }, + "span": 224 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 32, + "projection": [] + } + } + ], + "destination": { + "local": 31, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 34, + "kind": "ZeroSized", + "ty": 68 + }, + "span": 222, + "user_ty": null + } + }, + "target": 11, + "unwind": "Unreachable" + } + }, + "span": 223 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 32 + }, + "span": 225 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 12 + } + }, + "span": 234 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 33, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 29, + "projection": [] + } + }, + 55 + ] + } + ] + }, + "span": 226 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [ + { + "Type": 69 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 33, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 227 + }, + { + "kind": { + "StorageDead": 33 + }, + "span": 233 + }, + { + "kind": { + "StorageDead": 29 + }, + "span": 236 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 237 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 18, + 0, + [ + { + "Type": 54 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 238 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 235 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 235 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 35 + }, + "span": 240 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 241 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 239 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 44 + }, + "span": 216 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 35, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 71 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 242 + }, + { + "kind": { + "StorageLive": 49 + }, + "span": 243 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 36, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 72 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 244 + }, + { + "kind": { + "StorageDead": 49 + }, + "span": 243 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 245 + }, + { + "kind": { + "StorageLive": 50 + }, + "span": 217 + }, + { + "kind": { + "StorageDead": 50 + }, + "span": 217 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 246 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 37, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 57 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 247 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 248 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 249 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 221 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 44 + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 43 + }, + "span": 250 + }, + { + "kind": { + "StorageLive": 48 + }, + "span": 251 + }, + { + "kind": { + "StorageLive": 45 + }, + "span": 199 + }, + { + "kind": { + "Assign": [ + { + "local": 45, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 21 + ] + } + ] + }, + "span": 159 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 45, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 18 + ] + ], + "otherwise": 16 + } + } + }, + "span": 199 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 47 + }, + "span": 224 + }, + { + "kind": { + "Assign": [ + { + "local": 47, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 49 + ] + } + ] + }, + "span": 224 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 47, + "projection": [] + } + } + ], + "destination": { + "local": 46, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 34, + "kind": "ZeroSized", + "ty": 68 + }, + "span": 222, + "user_ty": null + } + }, + "target": 17, + "unwind": "Unreachable" + } + }, + "span": 223 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 47 + }, + "span": 225 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 18 + } + }, + "span": 234 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 45 + }, + "span": 252 + }, + { + "kind": { + "Assign": [ + { + "local": 48, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 226 + }, + { + "kind": { + "Assign": [ + { + "local": 43, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 48, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 227 + }, + { + "kind": { + "StorageDead": 48 + }, + "span": 251 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 1, + [ + { + "Type": 58 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 43, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 253 + }, + { + "kind": { + "StorageDead": 43 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 49 + }, + "span": 243 + }, + { + "kind": { + "Assign": [ + { + "local": 49, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 13, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 58 + ] + } + ] + } + } + } + ] + }, + "span": 255 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 18, + 0, + [ + { + "Type": 58 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 49, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 256 + }, + { + "kind": { + "StorageDead": 49 + }, + "span": 243 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 245 + }, + { + "kind": { + "StorageLive": 50 + }, + "span": 217 + }, + { + "kind": { + "Assign": [ + { + "local": 50, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 12, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 58 + ] + } + ] + } + } + } + ] + }, + "span": 257 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 20, + 0, + [ + { + "Type": 73 + }, + { + "Type": 58 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 50, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 258 + }, + { + "kind": { + "StorageDead": 50 + }, + "span": 217 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 246 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 11, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 58 + ] + } + ] + } + } + } + ] + }, + "span": 259 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 248 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 260 + }, + { + "kind": { + "StorageLive": 53 + }, + "span": 260 + }, + { + "kind": { + "StorageLive": 51 + }, + "span": 229 + }, + { + "kind": { + "StorageLive": 52 + }, + "span": 230 + }, + { + "kind": { + "Assign": [ + { + "local": 53, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 134 + }, + { + "kind": { + "Assign": [ + { + "local": 52, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 53, + "projection": [] + } + }, + 48 + ] + } + ] + }, + "span": 137 + }, + { + "kind": { + "Assign": [ + { + "local": 51, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 69, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 52, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 231 + }, + { + "kind": { + "StorageDead": 52 + }, + "span": 232 + }, + { + "kind": { + "StorageLive": 57 + }, + "span": 233 + }, + { + "kind": { + "StorageLive": 54 + }, + "span": 199 + }, + { + "kind": { + "Assign": [ + { + "local": 54, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 21 + ] + } + ] + }, + "span": 159 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 54, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 21 + ] + ], + "otherwise": 19 + } + } + }, + "span": 199 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 56 + }, + "span": 224 + }, + { + "kind": { + "Assign": [ + { + "local": 56, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 53, + "projection": [] + } + }, + 49 + ] + } + ] + }, + "span": 224 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 56, + "projection": [] + } + } + ], + "destination": { + "local": 55, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 34, + "kind": "ZeroSized", + "ty": 68 + }, + "span": 222, + "user_ty": null + } + }, + "target": 20, + "unwind": "Unreachable" + } + }, + "span": 223 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 56 + }, + "span": 225 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 21 + } + }, + "span": 234 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 54 + }, + "span": 252 + }, + { + "kind": { + "Assign": [ + { + "local": 57, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 51, + "projection": [] + } + }, + 55 + ] + } + ] + }, + "span": 226 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [ + { + "Type": 69 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 57, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 227 + }, + { + "kind": { + "StorageDead": 57 + }, + "span": 233 + }, + { + "kind": { + "StorageDead": 51 + }, + "span": 236 + }, + { + "kind": { + "StorageDead": 53 + }, + "span": 260 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 18, + 0, + [ + { + "Type": 54 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 261 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 262 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 249 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 249 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 263, + "ty": 57 + }, + { + "mutability": "Not", + "span": 264, + "ty": 51 + }, + { + "mutability": "Not", + "span": 265, + "ty": 56 + }, + { + "mutability": "Not", + "span": 266, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 267, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 195, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 200, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 201, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 202, + "ty": 65 + }, + { + "mutability": "Not", + "span": 198, + "ty": 48 + }, + { + "mutability": "Mut", + "span": 208, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 217, + "ty": 74 + }, + { + "mutability": "Mut", + "span": 218, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 219, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 220, + "ty": 48 + }, + { + "mutability": "Not", + "span": 259, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 260, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 268, + "ty": 48 + }, + { + "mutability": "Mut", + "span": 203, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 171, + "ty": 52 + }, + { + "mutability": "Not", + "span": 173, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 173, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 199, + "ty": 21 + }, + { + "mutability": "Not", + "span": 223, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 224, + "ty": 49 + }, + { + "mutability": "Mut", + "span": 226, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 229, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 230, + "ty": 48 + }, + { + "mutability": "Not", + "span": 223, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 224, + "ty": 49 + }, + { + "mutability": "Mut", + "span": 226, + "ty": 55 + }, + { + "mutability": "Mut", + "span": 209, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 211, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 212, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 171, + "ty": 52 + }, + { + "mutability": "Not", + "span": 173, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 173, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 250, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 102, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 199, + "ty": 21 + }, + { + "mutability": "Not", + "span": 223, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 224, + "ty": 49 + }, + { + "mutability": "Mut", + "span": 226, + "ty": 27 + }, + { + "mutability": "Not", + "span": 255, + "ty": 58 + }, + { + "mutability": "Not", + "span": 257, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 229, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 230, + "ty": 48 + }, + { + "mutability": "Mut", + "span": 134, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 199, + "ty": 21 + }, + { + "mutability": "Not", + "span": 223, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 224, + "ty": 49 + }, + { + "mutability": "Mut", + "span": 226, + "ty": 55 + } + ], + "span": 291, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 264 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 265 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "zeroed", + "source_info": { + "scope": 0, + "span": 266 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 269 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "raw_ptr", + "source_info": { + "scope": 2, + "span": 198 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 270 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "residual", + "source_info": { + "scope": 4, + "span": 271 + }, + "value": { + "Const": { + "const_": { + "id": 38, + "kind": "ZeroSized", + "ty": 73 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "val", + "source_info": { + "scope": 6, + "span": 259 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 190 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 272 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 191 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 192 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 12, + "span": 273 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 13, + "span": 274 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 16, + "span": 275 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 16, + "span": 276 + }, + "value": { + "Const": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 277, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 155 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 18, + "span": 278 + }, + "value": { + "Place": { + "local": 30, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 18, + "span": 279 + }, + "value": { + "Const": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 277, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 19, + "span": 280 + }, + "value": { + "Place": { + "local": 30, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 19, + "span": 281 + }, + "value": { + "Const": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 277, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 20, + "span": 274 + }, + "value": { + "Place": { + "local": 29, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "layout", + "source_info": { + "scope": 23, + "span": 282 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 190 + }, + "value": { + "Place": { + "local": 34, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 25, + "span": 191 + }, + "value": { + "Place": { + "local": 36, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 26, + "span": 192 + }, + "value": { + "Place": { + "local": 37, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 27, + "span": 283 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 28, + "span": 110 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 29, + "span": 111 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 30, + "span": 112 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 31, + "span": 113 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 32, + "span": 274 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 35, + "span": 284 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "err", + "source_info": { + "scope": 35, + "span": 285 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 70 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 36, + "span": 255 + }, + "value": { + "Place": { + "local": 49, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 37, + "span": 286 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 38, + "span": 257 + }, + "value": { + "Place": { + "local": 50, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "e", + "source_info": { + "scope": 39, + "span": 287 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 70 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 40, + "span": 275 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 40, + "span": 276 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 41, + "span": 155 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 42, + "span": 278 + }, + "value": { + "Place": { + "local": 52, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 42, + "span": 279 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 43, + "span": 280 + }, + "value": { + "Place": { + "local": 52, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 43, + "span": 281 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 44, + "span": 274 + }, + "value": { + "Place": { + "local": 51, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "residual", + "source_info": { + "scope": 47, + "span": 288 + }, + "value": { + "Const": { + "const_": { + "id": 38, + "kind": "ZeroSized", + "ty": 73 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "e", + "source_info": { + "scope": 48, + "span": 289 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 70 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "t", + "source_info": { + "scope": 49, + "span": 290 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 70 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 17, + "name": "std::alloc::Global::alloc_impl" + } + }, + "symbol_name": "_ZN5alloc5alloc6Global10alloc_impl17h878684328797f391E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 16 + ] + } + ] + }, + "span": 292 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 16 + ] + } + ] + }, + "span": 292 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 40, + "kind": "ZeroSized", + "ty": 76 + }, + "span": 292, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 2 + } + } + }, + "span": 292 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "ShallowInitBox": [ + { + "Move": { + "local": 4, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 292 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 0, + "projection": [ + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 0, + 43 + ] + }, + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 294 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [ + "Deref" + ] + }, + { + "Use": { + "Move": { + "local": 1, + "projection": [] + } + } + } + ] + }, + "span": 294 + } + ], + "terminator": { + "kind": "Return", + "span": 293 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 3, + "unwind": "Terminate" + } + }, + "span": 295 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 296 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 297, + "ty": 77 + }, + { + "mutability": "Not", + "span": 298, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 292, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 292, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 292, + "ty": 48 + }, + { + "mutability": "Mut", + "span": 292, + "ty": 44 + } + ], + "span": 296, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "x", + "source_info": { + "scope": 0, + "span": 298 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 21, + "name": "std::boxed::Box::::new" + } + }, + "symbol_name": "_ZN5alloc5boxed12Box$LT$T$GT$3new17hb7b054b22201ca41E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 300 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 300 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 167 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 301 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 299 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 304 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 134 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 134 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Move": { + "local": 8, + "projection": [] + } + }, + 48 + ] + } + ] + }, + "span": 137 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 305 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 306 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 306 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 307 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [] + } + ] + } + ] + }, + "span": 307 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 308 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 309 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 310 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [] + } + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 171 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 52 + ] + } + ] + } + } + } + ] + }, + "span": 171 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 173 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 12, + "projection": [ + { + "Field": [ + 0, + 61 + ] + } + ] + } + } + } + ] + }, + "span": 173 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Discriminant": { + "local": 13, + "projection": [] + } + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 62 + }, + "span": 174, + "user_ty": null + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 62 + }, + "span": 174, + "user_ty": null + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 17, + "projection": [] + } + } + } + }, + "span": 174 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 174 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 172 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 176 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 311 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 78 + }, + "span": 302, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 303 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 312 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 314 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 315 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 315 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 2 + } + }, + "span": 313 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 316, + "ty": 1 + }, + { + "mutability": "Not", + "span": 317, + "ty": 51 + }, + { + "mutability": "Not", + "span": 318, + "ty": 58 + }, + { + "mutability": "Not", + "span": 319, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 320, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 300, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 304, + "ty": 48 + }, + { + "mutability": "Mut", + "span": 306, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 134, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 307, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 310, + "ty": 65 + }, + { + "mutability": "Mut", + "span": 171, + "ty": 52 + }, + { + "mutability": "Not", + "span": 173, + "ty": 61 + }, + { + "mutability": "Mut", + "span": 173, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 21 + } + ], + "span": 323, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 317 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 0, + "span": 318 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 319 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 190 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 155 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 321 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 3, + "span": 322 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 190 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 191 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 192 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + } + ] + } + ], + "id": 22, + "name": "::deallocate" + } + }, + "symbol_name": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h31446c1bb7428470E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 326 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 326 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 0, + 43 + ] + }, + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 326 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 326 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 327 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 327 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 0, + 43 + ] + }, + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 327 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 327 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 42, + "kind": "ZeroSized", + "ty": 79 + }, + "span": 324, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 325 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 329 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 329 + } + ], + "terminator": { + "kind": "Return", + "span": 328 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 330, + "ty": 21 + }, + { + "mutability": "Not", + "span": 331, + "ty": 80 + }, + { + "mutability": "Not", + "span": 332, + "ty": 80 + }, + { + "mutability": "Mut", + "span": 326, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 327, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 331, + "ty": 77 + }, + { + "mutability": "Mut", + "span": 332, + "ty": 77 + }, + { + "mutability": "Mut", + "span": 331, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 332, + "ty": 44 + } + ], + "span": 333, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 331 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 332 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 23, + "name": " as std::cmp::PartialEq>::eq" + } + }, + "symbol_name": "_ZN71_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17he8355580e493ee18E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 0, + 43 + ] + } + ] + } + } + } + ] + }, + "span": 336 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 42 + ] + }, + { + "Field": [ + 1, + 82 + ] + } + ] + } + } + } + ] + }, + "span": 336 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 12, + "projection": [ + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 134 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 337 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 43, + "kind": "ZeroSized", + "ty": 81 + }, + "span": 334, + "user_ty": null + } + }, + "target": 4, + "unwind": "Unreachable" + } + }, + "span": 335 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 340 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 59 + ] + } + ] + } + ] + } + ] + }, + "span": 340 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 135 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 135 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 136 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 341 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 44, + "kind": "ZeroSized", + "ty": 83 + }, + "span": 338, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 339 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 343 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 3 + } + }, + "span": 342 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 344 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 45, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 345, + "user_ty": null + } + }, + "target": 5, + "unwind": "Unreachable" + } + }, + "span": 346 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 123 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 8, + "projection": [] + } + }, + 52 + ] + } + ] + }, + "span": 124 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 13, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 125 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 126 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 337 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 348 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 348 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 349 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 347 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 350, + "ty": 1 + }, + { + "mutability": "Not", + "span": 351, + "ty": 47 + }, + { + "mutability": "Not", + "span": 352, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 348, + "ty": 65 + }, + { + "mutability": "Not", + "span": 339, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 340, + "ty": 51 + }, + { + "mutability": "Mut", + "span": 134, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 353, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 354, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 123, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 355, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 135, + "ty": 27 + }, + { + "mutability": "Not", + "span": 356, + "ty": 43 + }, + { + "mutability": "Not", + "span": 356, + "ty": 82 + } + ], + "span": 366, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 351 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": { + "projection": [ + { + "Field": [ + 0, + 43 + ] + } + ], + "ty": 42 + }, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 356 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": { + "projection": [ + { + "Field": [ + 1, + 82 + ] + } + ], + "ty": 42 + }, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 356 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 2, + "span": 352 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 43 + ] + } + ], + "ty": 42 + }, + "name": "self", + "source_info": { + "scope": 3, + "span": 357 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 82 + ] + } + ], + "ty": 42 + }, + "name": "self", + "source_info": { + "scope": 3, + "span": 357 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 155 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "t", + "source_info": { + "scope": 5, + "span": 358 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 6, + "span": 359 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "align", + "source_info": { + "scope": 6, + "span": 360 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "val", + "source_info": { + "scope": 7, + "span": 361 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "val", + "source_info": { + "scope": 8, + "span": 362 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 9, + "span": 146 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 9, + "span": 147 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 10, + "span": 148 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 190 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 43 + ] + } + ], + "ty": 42 + }, + "name": "self", + "source_info": { + "scope": 12, + "span": 363 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 82 + ] + } + ], + "ty": 42 + }, + "name": "self", + "source_info": { + "scope": 12, + "span": 363 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 154 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 155 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 58 + ] + } + ], + "ty": 85 + }, + "name": "unique", + "source_info": { + "scope": 15, + "span": 364 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 86 + ] + } + ], + "ty": 85 + }, + "name": "unique", + "source_info": { + "scope": 15, + "span": 364 + }, + "value": { + "Const": { + "const_": { + "id": 46, + "kind": "ZeroSized", + "ty": 86 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 58 + ] + } + ], + "ty": 85 + }, + "name": "self", + "source_info": { + "scope": 16, + "span": 365 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 86 + ] + } + ], + "ty": 85 + }, + "name": "self", + "source_info": { + "scope": 16, + "span": 365 + }, + "value": { + "Const": { + "const_": { + "id": 46, + "kind": "ZeroSized", + "ty": 86 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 24, + "name": " as std::ops::Drop>::drop" + } + }, + "symbol_name": "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h326b1277d709d8a8E" + } + ] +} diff --git a/tests/integration/programs/char-trivial.rs b/tests/integration/programs/char-trivial.rs new file mode 100644 index 0000000..78236fb --- /dev/null +++ b/tests/integration/programs/char-trivial.rs @@ -0,0 +1,5 @@ +fn main() { + let a:char = 'a'; + + assert!(a == 'a'); +} \ No newline at end of file diff --git a/tests/integration/programs/char-trivial.smir.json.expected b/tests/integration/programs/char-trivial.smir.json.expected new file mode 100644 index 0000000..a00d517 --- /dev/null +++ b/tests/integration/programs/char-trivial.smir.json.expected @@ -0,0 +1,1680 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 61, + 61, + 32, + 39, + 97, + 39 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17ha21018ad4175866eE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hc064bca5f164541bE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h2404160337e74b25E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h732125ae762d93e6E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hc79ad2be06c8228fE" + } + ], + [ + 26, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 29, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 97, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 51, + "user_ty": null + } + } + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 97, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 50 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 53 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 54, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 54 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 55, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 28 + } + ], + "span": 57, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 56 + }, + "value": { + "Const": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 97, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 51, + "user_ty": null + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN12char_trivial4main17hdcdcf88dcae9eb46E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h96c2a96fcceb735fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hc79ad2be06c8228fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17ha21018ad4175866eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17haf18f95177fe722cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h2404160337e74b25E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h732125ae762d93e6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17he0a0cc927472deb2E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hc064bca5f164541bE" + } + ] +} diff --git a/tests/integration/programs/closure-args.rs b/tests/integration/programs/closure-args.rs new file mode 100644 index 0000000..cf91f52 --- /dev/null +++ b/tests/integration/programs/closure-args.rs @@ -0,0 +1,5 @@ +fn main() { + let sum = |x, y| -> i32 { x + y }; + + assert!(sum(20, 22) == 42); +} \ No newline at end of file diff --git a/tests/integration/programs/closure-args.smir.json.expected b/tests/integration/programs/closure-args.smir.json.expected new file mode 100644 index 0000000..40a9634 --- /dev/null +++ b/tests/integration/programs/closure-args.smir.json.expected @@ -0,0 +1,1974 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 115, + 117, + 109, + 40, + 50, + 48, + 44, + 32, + 50, + 50, + 41, + 32, + 61, + 61, + 32, + 52, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h0ea9521db3c84ccdE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbf176849a7ced595E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hc3597144c5271f28E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h0009d64ea9f5d8a8E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hef0fcd067a31abd9E" + } + ], + [ + 25, + { + "NormalSym": "_ZN12closure_args4main28_$u7b$$u7b$closure$u7d$$u7d$17h4010b117563766bdE" + } + ], + [ + 26, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 34, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 50 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 20, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 22, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 53, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 50, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 42, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 55 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 35, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 56, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 56 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 57, + "ty": 1 + }, + { + "mutability": "Not", + "span": 58, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 50, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 31 + } + ], + "span": 59, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "sum", + "source_info": { + "scope": 1, + "span": 58 + }, + "value": { + "Const": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN12closure_args4main17h2ed782b20238718aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ] + } + ] + }, + "span": 60 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 1, + 32 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 60 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 60 + } + ], + "terminator": { + "kind": "Return", + "span": 61 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 62, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 63, + "ty": 29 + }, + { + "mutability": "Not", + "span": 64, + "ty": 16 + }, + { + "mutability": "Not", + "span": 65, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 60, + "ty": 33 + } + ], + "span": 63, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 2, + "composite": null, + "name": "x", + "source_info": { + "scope": 0, + "span": 64 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "y", + "source_info": { + "scope": 0, + "span": 65 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "main::{closure#0}" + } + }, + "symbol_name": "_ZN12closure_args4main28_$u7b$$u7b$closure$u7d$$u7d$17h4010b117563766bdE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hec1fa9e4031ba742E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hef0fcd067a31abd9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h0ea9521db3c84ccdE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hb6b071620dc68fc1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h0009d64ea9f5d8a8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hc3597144c5271f28E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17he3553ba4ad776982E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbf176849a7ced595E" + } + ] +} diff --git a/tests/integration/programs/closure-no-args.rs b/tests/integration/programs/closure-no-args.rs new file mode 100644 index 0000000..7ec541c --- /dev/null +++ b/tests/integration/programs/closure-no-args.rs @@ -0,0 +1,5 @@ +fn main() { + let sum = || -> u32 { 42 }; + + assert!(sum() == 42); +} \ No newline at end of file diff --git a/tests/integration/programs/closure-no-args.smir.json.expected b/tests/integration/programs/closure-no-args.smir.json.expected new file mode 100644 index 0000000..55221cd --- /dev/null +++ b/tests/integration/programs/closure-no-args.smir.json.expected @@ -0,0 +1,1794 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 115, + 117, + 109, + 40, + 41, + 32, + 61, + 61, + 32, + 52, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17had87c6a7afa42371E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17haad8effff40ac51aE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h90d0d34e02ff3222E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hdb736a5cb8fd8fdeE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h73fc191ccceb2237E" + } + ], + [ + 25, + { + "NormalSym": "_ZN15closure_no_args4main28_$u7b$$u7b$closure$u7d$$u7d$17hbfe1dbd09ae23abeE" + } + ], + [ + 26, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 32, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 50 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 50, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 42, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 53 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 26 + }, + "span": 54, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 54 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 55, + "ty": 1 + }, + { + "mutability": "Not", + "span": 56, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 50, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 31 + } + ], + "span": 57, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "sum", + "source_info": { + "scope": 1, + "span": 56 + }, + "value": { + "Const": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN15closure_no_args4main17hed04138a1eb95e9bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 29 + }, + "span": 59, + "user_ty": null + } + } + } + ] + }, + "span": 59 + } + ], + "terminator": { + "kind": "Return", + "span": 58 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 60, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 61, + "ty": 30 + } + ], + "span": 61, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 7, + "name": "main::{closure#0}" + } + }, + "symbol_name": "_ZN15closure_no_args4main28_$u7b$$u7b$closure$u7d$$u7d$17hbfe1dbd09ae23abeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h69da4329aa000dccE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h73fc191ccceb2237E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17had87c6a7afa42371E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h3933dcebc964f0b2E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h90d0d34e02ff3222E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hdb736a5cb8fd8fdeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h6a2a266b602ceb47E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17haad8effff40ac51aE" + } + ] +} diff --git a/tests/integration/programs/const-arithm-simple.rs b/tests/integration/programs/const-arithm-simple.rs new file mode 100644 index 0000000..251d6b6 --- /dev/null +++ b/tests/integration/programs/const-arithm-simple.rs @@ -0,0 +1,12 @@ +fn test(x: usize, y:usize) -> bool { + return x > y; +} + + +fn main() { + let x:usize = 42; + let y:usize = 0; + let z:bool = test(x, y); + assert!(z); + return (); +} diff --git a/tests/integration/programs/const-arithm-simple.smir.json.expected b/tests/integration/programs/const-arithm-simple.smir.json.expected new file mode 100644 index 0000000..42c6b3b --- /dev/null +++ b/tests/integration/programs/const-arithm-simple.smir.json.expected @@ -0,0 +1,1937 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 122 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hc220dca5a4a9c4e1E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hec1278d0bf08a55dE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h62435ed81bec6ce7E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hdf7b2551e2c886aeE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h5e3c15d89ae15f10E" + } + ], + [ + 27, + { + "NormalSym": "_ZN19const_arithm_simple4test17h318cf5494f7e845bE" + } + ], + [ + 28, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 31, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 58, + "user_ty": null + } + } + } + ] + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 60, + "user_ty": null + } + } + } + ] + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 56, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 57 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 19, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 29 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 63, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 63 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 64 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 65, + "ty": 1 + }, + { + "mutability": "Not", + "span": 66, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 61, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 63, + "ty": 30 + } + ], + "span": 69, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "x", + "source_info": { + "scope": 1, + "span": 67 + }, + "value": { + "Const": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 58, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "y", + "source_info": { + "scope": 2, + "span": 68 + }, + "value": { + "Const": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 60, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "z", + "source_info": { + "scope": 3, + "span": 66 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "main" + } + }, + "symbol_name": "_ZN19const_arithm_simple4main17h7887b9190a80d762E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Gt", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": "Return", + "span": 50 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 25 + }, + { + "mutability": "Not", + "span": 53, + "ty": 26 + }, + { + "mutability": "Not", + "span": 54, + "ty": 26 + } + ], + "span": 55, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "x", + "source_info": { + "scope": 0, + "span": 53 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "y", + "source_info": { + "scope": 0, + "span": 54 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "test" + } + }, + "symbol_name": "_ZN19const_arithm_simple4test17h318cf5494f7e845bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hf4b87f91a0e3d576E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h5e3c15d89ae15f10E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hc220dca5a4a9c4e1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17ha9f8925cafcca3adE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h62435ed81bec6ce7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hdf7b2551e2c886aeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hde010ffffdc10138E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hec1278d0bf08a55dE" + } + ] +} diff --git a/tests/integration/programs/defined-trait.rs b/tests/integration/programs/defined-trait.rs new file mode 100644 index 0000000..8a67116 --- /dev/null +++ b/tests/integration/programs/defined-trait.rs @@ -0,0 +1,19 @@ +trait Summary { + fn summarise(&self) -> String; +} + +#[allow(dead_code)] +struct Container { + number: u32, +} + +impl Summary for Container { + fn summarise(&self) -> String { + "The number is zero or more!".to_string() + } +} + +fn main() { + let con = Container { number:42 }; + assert!(con.summarise() == "The number is zero or more!"); +} \ No newline at end of file diff --git a/tests/integration/programs/defined-trait.smir.json.expected b/tests/integration/programs/defined-trait.smir.json.expected new file mode 100644 index 0000000..3c053e1 --- /dev/null +++ b/tests/integration/programs/defined-trait.smir.json.expected @@ -0,0 +1,27726 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "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, + 112, + 116, + 114, + 58, + 58, + 99, + 111, + 112, + 121, + 95, + 110, + 111, + 110, + 111, + 118, + 101, + 114, + 108, + 97, + 112, + 112, + 105, + 110, + 103, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 98, + 111, + 116, + 104, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 97, + 114, + 103, + 117, + 109, + 101, + 110, + 116, + 115, + 32, + 97, + 114, + 101, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108, + 32, + 97, + 110, + 100, + 32, + 116, + 104, + 101, + 32, + 115, + 112, + 101, + 99, + 105, + 102, + 105, + 101, + 100, + 32, + 109, + 101, + 109, + 111, + 114, + 121, + 32, + 114, + 97, + 110, + 103, + 101, + 115, + 32, + 100, + 111, + 32, + 110, + 111, + 116, + 32, + 111, + 118, + 101, + 114, + 108, + 97, + 112 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 23 + ] + ] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 8, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 24 + ] + ] + } + } + } + ], + [ + 4, + { + "Memory": { + "align": 1, + "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, + 115, + 105, + 122, + 101, + 58, + 58, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 95, + 109, + 117, + 108, + 32, + 99, + 97, + 110, + 110, + 111, + 116, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 5, + { + "Memory": { + "align": 1, + "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, + 112, + 116, + 114, + 58, + 58, + 114, + 101, + 97, + 100, + 95, + 118, + 111, + 108, + 97, + 116, + 105, + 108, + 101, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 97, + 114, + 103, + 117, + 109, + 101, + 110, + 116, + 32, + 105, + 115, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 6, + { + "Memory": { + "align": 1, + "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, + 78, + 111, + 110, + 78, + 117, + 108, + 108, + 58, + 58, + 110, + 101, + 119, + 95, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 105, + 115, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 7, + { + "Memory": { + "align": 1, + "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, + 115, + 108, + 105, + 99, + 101, + 58, + 58, + 102, + 114, + 111, + 109, + 95, + 114, + 97, + 119, + 95, + 112, + 97, + 114, + 116, + 115, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 116, + 111, + 32, + 98, + 101, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108, + 44, + 32, + 97, + 110, + 100, + 32, + 116, + 104, + 101, + 32, + 116, + 111, + 116, + 97, + 108, + 32, + 115, + 105, + 122, + 101, + 32, + 111, + 102, + 32, + 116, + 104, + 101, + 32, + 115, + 108, + 105, + 99, + 101, + 32, + 110, + 111, + 116, + 32, + 116, + 111, + 32, + 101, + 120, + 99, + 101, + 101, + 100, + 32, + 96, + 105, + 115, + 105, + 122, + 101, + 58, + 58, + 77, + 65, + 88, + 96 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 8, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 110, + 111, + 110, + 111, + 118, + 101, + 114, + 108, + 97, + 112, + 112, + 105, + 110, + 103, + 58, + 32, + 96, + 115, + 105, + 122, + 101, + 95, + 111, + 102, + 58, + 58, + 60, + 84, + 62, + 40, + 41, + 32, + 42, + 32, + 99, + 111, + 117, + 110, + 116, + 96, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119, + 115, + 32, + 97, + 32, + 117, + 115, + 105, + 122, + 101 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 10, + { + "Memory": { + "align": 1, + "bytes": [ + 84, + 104, + 101, + 32, + 110, + 117, + 109, + 98, + 101, + 114, + 32, + 105, + 115, + 32, + 122, + 101, + 114, + 111, + 32, + 111, + 114, + 32, + 109, + 111, + 114, + 101, + 33 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 11, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 25 + ] + ] + } + } + } + ], + [ + 12, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 99, + 111, + 110, + 46, + 115, + 117, + 109, + 109, + 97, + 114, + 105, + 115, + 101, + 40, + 41, + 32, + 61, + 61, + 32, + 34, + 84, + 104, + 101, + 32, + 110, + 117, + 109, + 98, + 101, + 114, + 32, + 105, + 115, + 32, + 122, + 101, + 114, + 111, + 32, + 111, + 114, + 32, + 109, + 111, + 114, + 101, + 33, + 34 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 13, + { + "Memory": { + "align": 1, + "bytes": [ + 84, + 104, + 101, + 32, + 110, + 117, + 109, + 98, + 101, + 114, + 32, + 105, + 115, + 32, + 122, + 101, + 114, + 111, + 32, + 111, + 114, + 32, + 109, + 111, + 114, + 101, + 33 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 23, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 24, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 25, + { + "Memory": { + "align": 1, + "bytes": [ + 84, + 104, + 101, + 32, + 110, + 117, + 109, + 98, + 101, + 114, + 32, + 105, + 115, + 32, + 122, + 101, + 114, + 111, + 32, + 111, + 114, + 32, + 109, + 111, + 114, + 101, + 33 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hdaaf8f66ba8b07fbE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17he94a22af18302461E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h451c6b04f22095abE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h51bfddf7efe491c8E" + } + ], + [ + 30, + { + "NormalSym": "_ZN4core9ub_checks17is_nonoverlapping7runtime17h3c699aa3dd217762E" + } + ], + [ + 31, + { + "NormalSym": "_ZN4core9panicking14panic_nounwind17hee6445121510e179E" + } + ], + [ + 32, + { + "IntrinsicSym": "ctpop" + } + ], + [ + 33, + { + "NormalSym": "_ZN4core9panicking9panic_fmt17h8510a50a874ddcc2E" + } + ], + [ + 46, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h396ce4bb5a422dd5E" + } + ], + [ + 48, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hbbfbaaa71345ed22E" + } + ], + [ + 51, + { + "NormalSym": "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1a5ac00d73e54207E" + } + ], + [ + 55, + { + "NormalSym": "_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1e2744d4a270a4c6E" + } + ], + [ + 61, + { + "NormalSym": "_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_mul18precondition_check17h7a642e4a80f62f08E" + } + ], + [ + 65, + { + "IntrinsicSym": "unlikely" + } + ], + [ + 67, + { + "NormalSym": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17hd069999b4f72609fE" + } + ], + [ + 69, + { + "NormalSym": "_ZN5alloc7raw_vec12handle_error17h9fbab9c4138a4cf5E" + } + ], + [ + 73, + { + "NormalSym": "_ZN4core10intrinsics19copy_nonoverlapping18precondition_check17ha5b10a238ec55413E" + } + ], + [ + 78, + { + "NormalSym": "__rust_alloc" + } + ], + [ + 79, + { + "NormalSym": "_ZN4core3ptr13read_volatile18precondition_check17h479600701b538eb1E" + } + ], + [ + 80, + { + "IntrinsicSym": "volatile_load" + } + ], + [ + 82, + { + "NormalSym": "__rust_alloc_zeroed" + } + ], + [ + 83, + { + "NormalSym": "_ZN5alloc5alloc5alloc17h037977fef949d14aE" + } + ], + [ + 84, + { + "NormalSym": "_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h55a6e5449fb88ebeE" + } + ], + [ + 98, + { + "NormalSym": "_ZN4core5alloc6layout6Layout5array5inner17hc1fa8f6ec04d0a03E" + } + ], + [ + 99, + { + "NormalSym": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$15allocate_zeroed17h30a56ef2f8488920E" + } + ], + [ + 100, + { + "NormalSym": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbc10084ba40edd1aE" + } + ], + [ + 102, + { + "NormalSym": "__rust_dealloc" + } + ], + [ + 103, + { + "NormalSym": "_ZN5alloc5alloc6Global10alloc_impl17h387bc55e46abbdf8E" + } + ], + [ + 104, + { + "NoOpSym": "" + } + ], + [ + 105, + { + "IntrinsicSym": "size_of_val" + } + ], + [ + 106, + { + "IntrinsicSym": "compare_bytes" + } + ], + [ + 107, + { + "NormalSym": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h51fad278440e28deE" + } + ], + [ + 108, + { + "NormalSym": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb55a7883c826734eE" + } + ], + [ + 109, + { + "NormalSym": "_ZN4core5slice3raw14from_raw_parts18precondition_check17h00a00eefcbeb22d7E" + } + ], + [ + 110, + { + "NormalSym": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17heed7f68f230f2160E" + } + ], + [ + 116, + { + "NormalSym": "_ZN47_$LT$str$u20$as$u20$alloc..string..ToString$GT$9to_string17h4c6bc8cbeb8258f7E" + } + ], + [ + 118, + { + "NormalSym": "_ZN67_$LT$defined_trait..Container$u20$as$u20$defined_trait..Summary$GT$9summarise17h1a2582435aa6d75bE" + } + ], + [ + 119, + { + "NormalSym": "_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17hd089208062269690E" + } + ], + [ + 120, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 122, + { + "NoOpSym": "" + } + ], + [ + 124, + { + "NoOpSym": "" + } + ], + [ + 125, + { + "NormalSym": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h5bb83139422cc7e6E" + } + ], + [ + 126, + { + "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h850550b9d403c3e1E" + } + ], + [ + 127, + { + "NormalSym": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h62be22db9faf5d6aE" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 43, + 0, + [], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 77, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 43 + }, + "span": 778, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 779 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 780 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 76, + "kind": "ZeroSized", + "ty": 118 + }, + "span": 776, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 777 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 4, + "projection": [] + } + ] + } + ] + }, + "span": 777 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 79, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 11 + ] + ] + } + } + }, + "ty": 112 + }, + "span": 782, + "user_ty": null + } + } + } + ] + }, + "span": 782 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 78, + "kind": "ZeroSized", + "ty": 119 + }, + "span": 781, + "user_ty": null + } + }, + "target": 2, + "unwind": { + "Cleanup": 7 + } + } + }, + "span": 781 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 781 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 4, + "projection": [] + }, + "target": 6, + "unwind": "Continue" + } + }, + "span": 783 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 4, + "projection": [] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 783 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 81, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 66, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 12 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 80, + "kind": "ZeroSized", + "ty": 120 + }, + "span": 784, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 784 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 785 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 4, + "projection": [] + }, + "target": 8, + "unwind": "Terminate" + } + }, + "span": 783 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 786 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 787, + "ty": 1 + }, + { + "mutability": "Not", + "span": 788, + "ty": 121 + }, + { + "mutability": "Mut", + "span": 781, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 777, + "ty": 111 + }, + { + "mutability": "Not", + "span": 777, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 780, + "ty": 117 + }, + { + "mutability": "Mut", + "span": 782, + "ty": 112 + }, + { + "mutability": "Mut", + "span": 784, + "ty": 41 + } + ], + "span": 786, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "con", + "source_info": { + "scope": 1, + "span": 788 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 75, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 13 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 782, + "user_ty": null + } + } + } + ] + }, + "span": 782 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 782 + } + ], + "terminator": { + "kind": "Return", + "span": 782 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 782, + "ty": 112 + }, + { + "mutability": "Mut", + "span": 782, + "ty": 25 + } + ], + "span": 782, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 42, + "name": "main" + } + }, + "symbol_name": "_ZN13defined_trait4main17h45997b5a56c4893fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h5da45d1d6655e04bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hbbfbaaa71345ed22E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hdaaf8f66ba8b07fbE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 45 + }, + { + "kind": { + "StorageLive": 2 + }, + "span": 46 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 23 + ] + } + ] + }, + "span": 47 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 22 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": 0 + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 44 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 4, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 49 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 50 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 45 + } + ], + "terminator": { + "kind": "Return", + "span": 48 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 51, + "ty": 24 + }, + { + "mutability": "Not", + "span": 52, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 46, + "ty": 26 + }, + { + "mutability": "Not", + "span": 53, + "ty": 23 + } + ], + "span": 64, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 52 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "s", + "source_info": { + "scope": 1, + "span": 54 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 55 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 56 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 57 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 58 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 59 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 6, + "span": 60 + }, + "value": { + "Const": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 22 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "s", + "source_info": { + "scope": 7, + "span": 61 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 7, + "span": 62 + }, + "value": { + "Const": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 22 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "bytes", + "source_info": { + "scope": 8, + "span": 63 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 3, + "name": "::to_string" + } + }, + "symbol_name": "_ZN47_$LT$str$u20$as$u20$alloc..string..ToString$GT$9to_string17h4c6bc8cbeb8258f7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [], + "id": 5, + "name": "std::intrinsics::size_of_val::<[u8]>" + } + }, + "symbol_name": "_ZN4core10intrinsics11size_of_val17hf90fa9d6ad23cd78E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 5, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 66 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 66 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 12, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ] + ], + "otherwise": 9 + } + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 7 + }, + "span": 70 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 29 + ] + } + ] + }, + "span": 71 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 70 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 21, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 13 + ] + ], + "otherwise": 14 + } + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 74 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 72, + "user_ty": null + } + }, + "target": 18, + "unwind": "Terminate" + } + }, + "span": 73 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 76 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 76 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 76 + } + ], + "terminator": { + "kind": "Return", + "span": 75 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 7 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 7 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 7 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 166, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 78, + "user_ty": null + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 77, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 79 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 12 + }, + "span": 66 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 66 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 15 + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 15, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 12, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 15 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 86, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Move": { + "local": 19, + "projection": [] + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 18, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 88, + "user_ty": null + } + } + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 66 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 6 + ] + ], + "otherwise": 1 + } + } + }, + "span": 66 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 15 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 32, + "user_ty": null + } + }, + 35 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 36 + }, + "span": 32, + "user_ty": null + } + }, + 37 + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 16, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 38 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 17, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 14, + "projection": [] + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 15, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 10 + ] + ], + "otherwise": 11 + } + } + }, + "span": 83 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 21 + }, + "span": 70 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 70 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 24 + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 24, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 17, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 24 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 27 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 28 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 86, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Move": { + "local": 28, + "projection": [] + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 28 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 27, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 88, + "user_ty": null + } + } + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageDead": 27 + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 70 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 2 + } + } + }, + "span": 70 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 24 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 25 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 32, + "user_ty": null + } + }, + 35 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 26 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 26, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 36 + }, + "span": 32, + "user_ty": null + } + }, + 37 + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 25, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 38 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 26, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 26 + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 25 + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 23, + "projection": [] + } + } + ], + "destination": { + "local": 22, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 24, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 15 + ] + ], + "otherwise": 16 + } + } + }, + "span": 83 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 74 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 97, + "ty": 1 + }, + { + "mutability": "Not", + "span": 98, + "ty": 29 + }, + { + "mutability": "Not", + "span": 98, + "ty": 39 + }, + { + "mutability": "Not", + "span": 98, + "ty": 28 + }, + { + "mutability": "Not", + "span": 98, + "ty": 28 + }, + { + "mutability": "Not", + "span": 98, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 70, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 71, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 40 + }, + { + "mutability": "Not", + "span": 79, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 28 + }, + { + "mutability": "Not", + "span": 91, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 28 + }, + { + "mutability": "Not", + "span": 91, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 28 + } + ], + "span": 118, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dst", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 5, + "composite": null, + "name": "count", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 100 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 101 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 102 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 103 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 104 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 105 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 106 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 107 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 108 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 109 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 110 + }, + "value": { + "Const": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 111, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 112 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 113 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 104 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 15, + "span": 100 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 15, + "span": 101 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 16, + "span": 102 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 18, + "span": 103 + }, + "value": { + "Place": { + "local": 20, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 19, + "span": 104 + }, + "value": { + "Place": { + "local": 20, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 20, + "span": 105 + }, + "value": { + "Place": { + "local": 20, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 21, + "span": 106 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 21, + "span": 107 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 22, + "span": 108 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 23, + "span": 109 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 105 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 25, + "span": 110 + }, + "value": { + "Const": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 111, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 26, + "span": 112 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 26, + "span": 113 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 27, + "span": 104 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 28, + "span": 105 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 29, + "span": 114 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dst", + "source_info": { + "scope": 29, + "span": 115 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "size", + "source_info": { + "scope": 29, + "span": 116 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "count", + "source_info": { + "scope": 29, + "span": 117 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "std::intrinsics::copy_nonoverlapping::precondition_check" + } + }, + "symbol_name": "_ZN4core10intrinsics19copy_nonoverlapping18precondition_check17ha5b10a238ec55413E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [] + } + } + } + ] + }, + "span": 120 + } + ], + "terminator": { + "kind": "Return", + "span": 119 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 121, + "ty": 40 + }, + { + "mutability": "Not", + "span": 122, + "ty": 40 + } + ], + "span": 123, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "b", + "source_info": { + "scope": 0, + "span": 122 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 8, + "name": "std::intrinsics::unlikely" + } + }, + "symbol_name": "_ZN4core10intrinsics8unlikely17h1b9c4265ec30503dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 125 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 126 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 127 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 44 + ] + } + ] + }, + "span": 127 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 128 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 44 + ] + } + ] + }, + "span": 128 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + } + ] + }, + "span": 126 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 129 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 129 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 130 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 1, + 40 + ] + } + ] + } + } + } + ] + }, + "span": 131 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 132 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 125 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 124 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 69, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 134, + "user_ty": null + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 133, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 135 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 136 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 137, + "ty": 1 + }, + { + "mutability": "Not", + "span": 138, + "ty": 28 + }, + { + "mutability": "Not", + "span": 138, + "ty": 28 + }, + { + "mutability": "Not", + "span": 135, + "ty": 41 + }, + { + "mutability": "Not", + "span": 130, + "ty": 44 + }, + { + "mutability": "Not", + "span": 131, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 126, + "ty": 45 + }, + { + "mutability": "Mut", + "span": 127, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 128, + "ty": 44 + } + ], + "span": 141, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "lhs", + "source_info": { + "scope": 0, + "span": 138 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 0, + "span": 138 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 139 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 1, + "span": 140 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 2, + "span": 130 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 131 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 9, + "name": "core::num::::unchecked_mul::precondition_check" + } + }, + "symbol_name": "_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_mul18precondition_check17h7a642e4a80f62f08E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 20, + "kind": "ZeroSized", + "ty": 46 + }, + "span": 142, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 142 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 142, + "ty": 16 + }, + { + "mutability": "Not", + "span": 142, + "ty": 47 + }, + { + "mutability": "Not", + "span": 142, + "ty": 1 + } + ], + "span": 142, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 10, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h63a9763250dd8e8bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 142 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 21, + "kind": "ZeroSized", + "ty": 48 + }, + "span": 142, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 142 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 142, + "ty": 16 + }, + { + "mutability": "Not", + "span": 142, + "ty": 12 + }, + { + "mutability": "Not", + "span": 142, + "ty": 1 + }, + { + "mutability": "Not", + "span": 142, + "ty": 49 + } + ], + "span": 142, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 10, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h396ce4bb5a422dd5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 142 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 142, + "ty": 1 + }, + { + "mutability": "Not", + "span": 142, + "ty": 7 + }, + { + "mutability": "Not", + "span": 142, + "ty": 1 + } + ], + "span": 142, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 10, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h451c6b04f22095abE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 143 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 143 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 4 + } + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 145 + } + ], + "terminator": { + "kind": "Return", + "span": 144 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 110, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 5 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 147, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 146, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 148 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 143 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 2 + } + }, + "span": 143 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 7, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 86, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 13, + "projection": [] + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 88, + "user_ty": null + } + } + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 143 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 143 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 32, + "user_ty": null + } + }, + 35 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 36 + }, + "span": 32, + "user_ty": null + } + }, + 37 + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 38 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 5 + ] + ], + "otherwise": 6 + } + } + }, + "span": 83 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 149, + "ty": 1 + }, + { + "mutability": "Not", + "span": 150, + "ty": 29 + }, + { + "mutability": "Not", + "span": 150, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 143, + "ty": 40 + }, + { + "mutability": "Not", + "span": 148, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 28 + }, + { + "mutability": "Not", + "span": 91, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 28 + } + ], + "span": 151, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 0, + "span": 150 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 150 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 100 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 101 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 102 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 103 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 104 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 105 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 106 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 107 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 108 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 109 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 110 + }, + "value": { + "Const": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 111, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 112 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 113 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 104 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 11, + "name": "std::ptr::read_volatile::precondition_check" + } + }, + "symbol_name": "_ZN4core3ptr13read_volatile18precondition_check17h479600701b538eb1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 152 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 152, + "ty": 1 + }, + { + "mutability": "Not", + "span": 152, + "ty": 50 + } + ], + "span": 152, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "std::ptr::drop_in_place::" + } + }, + "symbol_name": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h850550b9d403c3e1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 152 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 23, + "kind": "ZeroSized", + "ty": 51 + }, + "span": 152, + "user_ty": null + } + }, + "target": 4, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 52 + ] + } + ] + }, + "target": 1, + "unwind": "Terminate" + } + }, + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 52 + ] + } + ] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 152 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 152, + "ty": 1 + }, + { + "mutability": "Not", + "span": 152, + "ty": 53 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 1 + } + ], + "span": 152, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "std::ptr::drop_in_place::>" + } + }, + "symbol_name": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h62be22db9faf5d6aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 152 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 24, + "kind": "ZeroSized", + "ty": 55 + }, + "span": 152, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 152 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 152, + "ty": 1 + }, + { + "mutability": "Not", + "span": 152, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 57 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 1 + } + ], + "span": 152, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "std::ptr::drop_in_place::>" + } + }, + "symbol_name": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h5bb83139422cc7e6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 152 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 152, + "ty": 1 + }, + { + "mutability": "Not", + "span": 152, + "ty": 47 + } + ], + "span": 152, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hea919438ab54ed8eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 154 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 155 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 156 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 157 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 154 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 153 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 153 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 93, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 6 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 159, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 158, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 160 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 153 + } + ], + "terminator": { + "kind": "Return", + "span": 161 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 162, + "ty": 1 + }, + { + "mutability": "Not", + "span": 163, + "ty": 39 + }, + { + "mutability": "Not", + "span": 160, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 155, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 156, + "ty": 28 + } + ], + "span": 168, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 0, + "span": 163 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 164 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 2, + "span": 165 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 166 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 167 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 13, + "name": "std::ptr::NonNull::::new_unchecked::precondition_check" + } + }, + "symbol_name": "_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h55a6e5449fb88ebeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 1 + } + } + }, + "span": 169 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 171 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 170 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 173 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 174 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Discriminant": { + "local": 13, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 17, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 175 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Move": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 179, + "user_ty": null + } + } + ] + } + ] + }, + "span": 173 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 180 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 127 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + } + ] + }, + "span": 181 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 180 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 170, + "user_ty": null + } + } + ] + } + ] + }, + "span": 170 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 7, + "projection": [] + } + }, + "expected": false, + "msg": { + "DivisionByZero": { + "Copy": { + "local": 6, + "projection": [] + } + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 170 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "Div", + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 170 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 182 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Gt", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 171 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 171 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 182 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 29, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 60 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 184 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 185 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 183 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 182 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 185 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 186 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 18, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ] + ], + "otherwise": 7 + } + } + }, + "span": 186 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 183 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 19, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 30, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 188, + "user_ty": null + } + }, + "target": 8, + "unwind": "Unreachable" + } + }, + "span": 189 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 18 + }, + "span": 190 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "BinaryOp": [ + "MulUnchecked", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ] + } + ] + }, + "span": 191 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 192 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 193 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Discriminant": { + "local": 20, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 24, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 194 + }, + { + "kind": { + "StorageDead": 23 + }, + "span": 194 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 194 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 25 + }, + "span": 195 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 10, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 196 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 15, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 25, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 197 + }, + { + "kind": { + "StorageDead": 25 + }, + "span": 198 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 199 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 63 + }, + { + "Type": 64 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 9, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 200 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 201 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 183 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 202, + "ty": 60 + }, + { + "mutability": "Not", + "span": 203, + "ty": 28 + }, + { + "mutability": "Not", + "span": 204, + "ty": 62 + }, + { + "mutability": "Not", + "span": 205, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 171, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 170, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 172, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 170, + "ty": 40 + }, + { + "mutability": "Not", + "span": 206, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 192, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 193, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 173, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 28 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 186, + "ty": 40 + }, + { + "mutability": "Not", + "span": 189, + "ty": 1 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 195, + "ty": 62 + } + ], + "span": 214, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "element_size", + "source_info": { + "scope": 0, + "span": 203 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 204 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "n", + "source_info": { + "scope": 0, + "span": 205 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "array_size", + "source_info": { + "scope": 1, + "span": 206 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 2, + "span": 207 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 208 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 209 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 4, + "span": 210 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 208 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 8, + "span": 211 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 8, + "span": 212 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 9, + "span": 213 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + } + ] + } + ], + "id": 14, + "name": "std::alloc::Layout::array::inner" + } + }, + "symbol_name": "_ZN4core5alloc6layout6Layout5array5inner17hc1fa8f6ec04d0a03E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 215 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 216 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 29 + ] + } + ] + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 215 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 10, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 6 + ] + ], + "otherwise": 7 + } + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 218 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 219 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 219 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 220 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 221, + "user_ty": null + } + } + ] + } + ] + }, + "span": 217 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 11 + ] + ], + "otherwise": 12 + } + } + }, + "span": 217 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 223 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 223 + } + ], + "terminator": { + "kind": "Return", + "span": 222 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 218 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 31, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 162, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 225, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 224, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 226 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 215 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 215 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 13 + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 10, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 86, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 10, + "projection": [] + } + }, + { + "Move": { + "local": 17, + "projection": [] + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 16, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 88, + "user_ty": null + } + } + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 215 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 1 + } + } + }, + "span": 215 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 32, + "user_ty": null + } + }, + 35 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 36 + }, + "span": 32, + "user_ty": null + } + }, + 37 + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 38 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 15, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 12, + "projection": [] + } + } + ], + "destination": { + "local": 11, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 13, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 8 + ] + ], + "otherwise": 9 + } + } + }, + "span": 83 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 32, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 228, + "user_ty": null + } + } + } + ] + }, + "span": 228 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 227 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Copy": { + "local": 19, + "projection": [] + } + }, + "expected": false, + "msg": { + "DivisionByZero": { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 127 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + }, + "target": 13, + "unwind": "Terminate" + } + }, + "span": 229 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "BinaryOp": [ + "Div", + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 127 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 229 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 227 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 20 + }, + "span": 230 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 18, + "projection": [] + } + } + } + ] + }, + "span": 230 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 20, + "projection": [] + } + } + ] + } + ] + }, + "span": 231 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 232 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 233 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 219 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 219 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 234, + "ty": 1 + }, + { + "mutability": "Not", + "span": 235, + "ty": 39 + }, + { + "mutability": "Not", + "span": 235, + "ty": 28 + }, + { + "mutability": "Not", + "span": 235, + "ty": 28 + }, + { + "mutability": "Not", + "span": 235, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 215, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 216, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 219, + "ty": 40 + }, + { + "mutability": "Not", + "span": 226, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 28 + }, + { + "mutability": "Not", + "span": 91, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 28 + }, + { + "mutability": "Not", + "span": 220, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 217, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 230, + "ty": 28 + } + ], + "span": 238, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 0, + "span": 235 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 235 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 235 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "len", + "source_info": { + "scope": 0, + "span": 235 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 100 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 101 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 102 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 103 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 104 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 105 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 106 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 107 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 108 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 109 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 105 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 110 + }, + "value": { + "Const": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 111, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 112 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 113 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 104 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 105 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 15, + "span": 236 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 15, + "span": 237 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "max_len", + "source_info": { + "scope": 16, + "span": 220 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + } + ] + } + ], + "id": 17, + "name": "std::slice::from_raw_parts::precondition_check" + } + }, + "symbol_name": "_ZN4core5slice3raw14from_raw_parts18precondition_check17h00a00eefcbeb22d7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 241 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 242 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 242 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 243 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 126 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 127 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 44 + ] + } + ] + }, + "span": 127 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 128 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + 44 + ] + } + ] + }, + "span": 128 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Move": { + "local": 16, + "projection": [] + } + }, + { + "Move": { + "local": 17, + "projection": [] + } + } + ] + } + ] + }, + "span": 126 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 129 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 129 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 130 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 1, + 40 + ] + } + ] + } + } + } + ] + }, + "span": 131 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 132 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 13, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 244 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 243 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 240 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 14, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 33, + "kind": "ZeroSized", + "ty": 65 + }, + "span": 239, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 240 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 12, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 240 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 12 + }, + "span": 248 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 242 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 242 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 249 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 34, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 61, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 8 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 246, + "user_ty": null + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 245, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 247 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 1, + [ + { + "Type": 28 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 18, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 251 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 248 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 242 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 242 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 252 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 249 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 253 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 250 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 250 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 22, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 4 + } + } + }, + "span": 250 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Copy": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 256 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 255 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 257 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 255 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 22 + }, + "span": 259 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 254 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 254 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 260 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [] + } + } + } + ] + }, + "span": 260 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Move": { + "local": 11, + "projection": [] + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + } + ] + } + ] + }, + "span": 261 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 262 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 263 + } + ], + "terminator": { + "kind": "Return", + "span": 258 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 264, + "ty": 40 + }, + { + "mutability": "Not", + "span": 265, + "ty": 29 + }, + { + "mutability": "Not", + "span": 266, + "ty": 29 + }, + { + "mutability": "Not", + "span": 267, + "ty": 28 + }, + { + "mutability": "Not", + "span": 268, + "ty": 28 + }, + { + "mutability": "Not", + "span": 269, + "ty": 28 + }, + { + "mutability": "Not", + "span": 270, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 271, + "ty": 41 + }, + { + "mutability": "Not", + "span": 252, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 241, + "ty": 66 + }, + { + "mutability": "Not", + "span": 253, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 260, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 240, + "ty": 40 + }, + { + "mutability": "Not", + "span": 130, + "ty": 44 + }, + { + "mutability": "Not", + "span": 131, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 126, + "ty": 45 + }, + { + "mutability": "Mut", + "span": 127, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 128, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 244, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 272, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 273, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 274, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 250, + "ty": 40 + } + ], + "span": 285, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 0, + "span": 265 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dst", + "source_info": { + "scope": 0, + "span": 266 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 267 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "count", + "source_info": { + "scope": 0, + "span": 268 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "src_usize", + "source_info": { + "scope": 1, + "span": 269 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "dst_usize", + "source_info": { + "scope": 2, + "span": 270 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 3, + "span": 252 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "diff", + "source_info": { + "scope": 4, + "span": 253 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 104 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 104 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 105 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 275 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 9, + "span": 276 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 10, + "span": 277 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 10, + "span": 278 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 139 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 11, + "span": 140 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 12, + "span": 130 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 12, + "span": 131 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 279 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 13, + "span": 280 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 15, + "span": 281 + }, + "value": { + "Place": { + "local": 20, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 15, + "span": 282 + }, + "value": { + "Place": { + "local": 21, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 16, + "span": 283 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 284 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + } + ] + } + ], + "id": 18, + "name": "core::ub_checks::is_nonoverlapping::runtime" + } + }, + "symbol_name": "_ZN4core9ub_checks17is_nonoverlapping7runtime17h3c699aa3dd217762E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 288 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 289 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 290 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 290 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 290 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 287 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 36, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 68 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 35, + "kind": "ZeroSized", + "ty": 67 + }, + "span": 286, + "user_ty": 0 + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 287 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Discriminant": { + "local": 10, + "projection": [] + } + } + ] + }, + "span": 287 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 11, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ], + [ + 1, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 291 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 287 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 10, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 70 + ] + } + ] + } + } + } + ] + }, + "span": 294 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 12, + "projection": [] + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 37, + "kind": "ZeroSized", + "ty": 69 + }, + "span": 292, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 293 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 10, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 52 + ] + } + ] + } + } + } + ] + }, + "span": 296 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 297 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 290 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 290 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 21, + 0, + [ + { + "Type": 9 + }, + { + "Type": 22 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 298, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 299 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 300 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 301 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 302 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 303 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 304 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 305 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "TwoPhaseBorrow" + } + }, + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 305 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 306 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 52 + ] + } + ] + } + ] + } + ] + }, + "span": 306 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 307 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 52 + ] + }, + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 308 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 16, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 307 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 311 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 312 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 295 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 18, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 7 + ] + ], + "otherwise": 5 + } + } + }, + "span": 295 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 20 + }, + "span": 315 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 29 + ] + } + ] + }, + "span": 315 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 316 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 16, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 316 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 317 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 9 + ] + } + ] + }, + "span": 317 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 318 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 319 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 20, + "projection": [] + } + }, + { + "Move": { + "local": 21, + "projection": [] + } + }, + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 19, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 38, + "kind": "ZeroSized", + "ty": 73 + }, + "span": 313, + "user_ty": null + } + }, + "target": 6, + "unwind": "Unreachable" + } + }, + "span": 314 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 23 + }, + "span": 321 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 321 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 321 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 321 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 7 + } + }, + "span": 320 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 18 + }, + "span": 323 + }, + { + "kind": { + "Intrinsic": { + "CopyNonOverlapping": { + "count": { + "Copy": { + "local": 4, + "projection": [] + } + }, + "dst": { + "Copy": { + "local": 6, + "projection": [] + } + }, + "src": { + "Copy": { + "local": 5, + "projection": [] + } + } + } + } + }, + "span": 324 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 325 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 325 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 326 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "TwoPhaseBorrow" + } + }, + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 326 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 327 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 28 + ] + } + ] + }, + { + "Use": { + "Copy": { + "local": 4, + "projection": [] + } + } + } + ] + }, + "span": 328 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 327 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 329 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 330 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 331 + } + ], + "terminator": { + "kind": "Return", + "span": 322 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 332, + "ty": 26 + }, + { + "mutability": "Not", + "span": 333, + "ty": 23 + }, + { + "mutability": "Not", + "span": 334, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 288, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 289, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 301, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 304, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 305, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 326, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 290, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 287, + "ty": 74 + }, + { + "mutability": "Mut", + "span": 335, + "ty": 6 + }, + { + "mutability": "Not", + "span": 294, + "ty": 70 + }, + { + "mutability": "Mut", + "span": 293, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 306, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 308, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 295, + "ty": 40 + }, + { + "mutability": "Not", + "span": 314, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 315, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 316, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 317, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 318, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 337, + "ty": 76 + } + ], + "span": 357, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "s", + "source_info": { + "scope": 0, + "span": 333 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 0, + "span": 334 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 288 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "capacity", + "source_info": { + "scope": 2, + "span": 338 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 2, + "span": 339 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "capacity", + "source_info": { + "scope": 3, + "span": 340 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 3, + "span": 341 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "res", + "source_info": { + "scope": 4, + "span": 296 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "err", + "source_info": { + "scope": 5, + "span": 294 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 342 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 343 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 344 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 9, + "span": 345 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 9, + "span": 345 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 346 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 347 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dest", + "source_info": { + "scope": 11, + "span": 348 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "count", + "source_info": { + "scope": 11, + "span": 349 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 12, + "span": 350 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dst", + "source_info": { + "scope": 12, + "span": 351 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "count", + "source_info": { + "scope": 12, + "span": 352 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 16, + "span": 353 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "new_len", + "source_info": { + "scope": 16, + "span": 354 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 355 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 18, + "span": 356 + }, + "value": { + "Place": { + "local": 24, + "projection": [] + } + } + } + ] + } + ], + "id": 20, + "name": "::to_vec::" + } + }, + "symbol_name": "_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h51bfddf7efe491c8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 40, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 359, + "user_ty": null + } + } + } + ] + }, + "span": 359 + } + ], + "terminator": { + "kind": "Return", + "span": 358 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 360, + "ty": 17 + }, + { + "mutability": "Not", + "span": 361, + "ty": 1 + } + ], + "span": 362, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 361 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 22, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17he94a22af18302461E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 364 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 363 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 3 + } + } + }, + "span": 363 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 366 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 366 + } + ], + "terminator": { + "kind": "Return", + "span": 365 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 369 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 370 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 371 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 371 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 372 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 373 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 374 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 375 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 375 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 62 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Discriminant": { + "local": 11, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 13, + "projection": [] + } + }, + { + "Move": { + "local": 14, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 15, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 378 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 379 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 78 + }, + "span": 367, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 368 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 382 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Constant": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 9 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + }, + 29 + ] + } + ] + }, + "span": 382 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 42, + "kind": "ZeroSized", + "ty": 79 + }, + "span": 380, + "user_ty": null + } + }, + "target": 4, + "unwind": "Unreachable" + } + }, + "span": 381 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 384 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 383 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 387 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 9 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 44, + "kind": "ZeroSized", + "ty": 80 + }, + "span": 385, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 386 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 388, + "ty": 58 + }, + { + "mutability": "Not", + "span": 389, + "ty": 63 + }, + { + "mutability": "Not", + "span": 364, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 370, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 371, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 374, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 375, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 363, + "ty": 40 + }, + { + "mutability": "Not", + "span": 381, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 382, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 62 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + } + ], + "span": 394, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 389 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 1, + "span": 390 + }, + "value": { + "Const": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 9 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 391, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 392 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 393 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 208 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + } + ] + } + ], + "id": 23, + "name": "std::alloc::alloc" + } + }, + "symbol_name": "_ZN5alloc5alloc5alloc17h037977fef949d14aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 396 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 396 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 372 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 397 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 395 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 399 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 398 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 401 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 402 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 403 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 403 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 404 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 62 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 19, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Discriminant": { + "local": 20, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 24, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 23 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 18, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 405 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 406 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 25, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 9 + ] + ], + "otherwise": 7 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 10 + }, + "span": 409 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [] + } + } + } + ] + }, + "span": 409 + }, + { + "kind": { + "StorageLive": 34 + }, + "span": 410 + }, + { + "kind": { + "Assign": [ + { + "local": 34, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 410 + }, + { + "kind": { + "StorageDead": 34 + }, + "span": 411 + }, + { + "kind": { + "StorageLive": 35 + }, + "span": 412 + }, + { + "kind": { + "StorageLive": 36 + }, + "span": 413 + }, + { + "kind": { + "Assign": [ + { + "local": 36, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 413 + }, + { + "kind": { + "StorageLive": 37 + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 37, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 62 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "StorageLive": 39 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 40 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 41 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 42 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 38 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 38, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 37, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 39, + "projection": [] + }, + { + "Discriminant": { + "local": 38, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 40, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 41, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 42, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 40, + "projection": [] + } + }, + { + "Move": { + "local": 41, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 42, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 35, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 38 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 42 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 41 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 40 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 39 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 37 + }, + "span": 378 + }, + { + "kind": { + "StorageDead": 36 + }, + "span": 414 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 35, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 45, + "kind": "ZeroSized", + "ty": 82 + }, + "span": 407, + "user_ty": null + } + }, + "target": 13, + "unwind": "Unreachable" + } + }, + "span": 408 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 46, + "kind": "ZeroSized", + "ty": 83 + }, + "span": 415, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 416 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 11 + }, + "span": 418 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 419 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 420 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [] + } + } + } + ] + }, + "span": 421 + }, + { + "kind": { + "StorageLive": 44 + }, + "span": 156 + }, + { + "kind": { + "Assign": [ + { + "local": 44, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 157 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 44, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 14 + ] + ], + "otherwise": 15 + } + } + }, + "span": 417 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 422 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 27 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 27, + "projection": [] + } + } + ], + "destination": { + "local": 26, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 8, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 27 + }, + "span": 426 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 28, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 429 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 430 + }, + { + "kind": { + "StorageLive": 30 + }, + "span": 431 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [] + } + } + } + ] + }, + "span": 310 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 432 + }, + { + "kind": { + "StorageDead": 30 + }, + "span": 433 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 434 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 10 + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 28, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 429 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 430 + }, + { + "kind": { + "StorageLive": 30 + }, + "span": 431 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [] + } + } + } + ] + }, + "span": 310 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 432 + }, + { + "kind": { + "StorageDead": 30 + }, + "span": 433 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 434 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 25, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 12 + ] + ], + "otherwise": 10 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 32 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 32, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 32, + "projection": [] + } + } + ], + "destination": { + "local": 31, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 11, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 32 + }, + "span": 426 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 12 + } + }, + "span": 435 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 33, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 29, + "projection": [] + } + }, + 75 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 85 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 33, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 33 + }, + "span": 434 + }, + { + "kind": { + "StorageDead": 29 + }, + "span": 437 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 438 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 86 + }, + { + "Type": 87 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 439 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 436 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 436 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 35 + }, + "span": 441 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 442 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 440 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 44 + }, + "span": 417 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 48, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 88 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 443 + }, + { + "kind": { + "StorageLive": 49 + }, + "span": 444 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 49, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 89 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 445 + }, + { + "kind": { + "StorageDead": 49 + }, + "span": 444 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 446 + }, + { + "kind": { + "StorageLive": 50 + }, + "span": 418 + }, + { + "kind": { + "StorageDead": 50 + }, + "span": 418 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 447 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 50, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 90 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 448 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 449 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 450 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 422 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 44 + }, + "span": 417 + }, + { + "kind": { + "StorageLive": 43 + }, + "span": 451 + }, + { + "kind": { + "StorageLive": 48 + }, + "span": 452 + }, + { + "kind": { + "StorageLive": 45 + }, + "span": 400 + }, + { + "kind": { + "Assign": [ + { + "local": 45, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 45, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 18 + ] + ], + "otherwise": 16 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 47 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 47, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 47, + "projection": [] + } + } + ], + "destination": { + "local": 46, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 17, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 47 + }, + "span": 426 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 18 + } + }, + "span": 435 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 45 + }, + "span": 453 + }, + { + "kind": { + "Assign": [ + { + "local": 48, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 43, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 48, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 48 + }, + "span": 452 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 1, + [ + { + "Type": 72 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 43, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 454 + }, + { + "kind": { + "StorageDead": 43 + }, + "span": 455 + }, + { + "kind": { + "StorageLive": 49 + }, + "span": 444 + }, + { + "kind": { + "Assign": [ + { + "local": 49, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 13, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 456 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 72 + }, + { + "Type": 87 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 49, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 457 + }, + { + "kind": { + "StorageDead": 49 + }, + "span": 444 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 446 + }, + { + "kind": { + "StorageLive": 50 + }, + "span": 418 + }, + { + "kind": { + "Assign": [ + { + "local": 50, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 12, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 458 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 26, + 0, + [ + { + "Type": 91 + }, + { + "Type": 72 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 50, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 459 + }, + { + "kind": { + "StorageDead": 50 + }, + "span": 418 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 447 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 11, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 460 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 449 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 461 + }, + { + "kind": { + "StorageLive": 53 + }, + "span": 461 + }, + { + "kind": { + "StorageLive": 51 + }, + "span": 430 + }, + { + "kind": { + "StorageLive": 52 + }, + "span": 431 + }, + { + "kind": { + "Assign": [ + { + "local": 53, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 52, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 53, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "Assign": [ + { + "local": 51, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 52, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 432 + }, + { + "kind": { + "StorageDead": 52 + }, + "span": 433 + }, + { + "kind": { + "StorageLive": 57 + }, + "span": 434 + }, + { + "kind": { + "StorageLive": 54 + }, + "span": 400 + }, + { + "kind": { + "Assign": [ + { + "local": 54, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 54, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 21 + ] + ], + "otherwise": 19 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 56 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 56, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 53, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 56, + "projection": [] + } + } + ], + "destination": { + "local": 55, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 20, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 56 + }, + "span": 426 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 21 + } + }, + "span": 435 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 54 + }, + "span": 453 + }, + { + "kind": { + "Assign": [ + { + "local": 57, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 51, + "projection": [] + } + }, + 75 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 85 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 57, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 57 + }, + "span": 434 + }, + { + "kind": { + "StorageDead": 51 + }, + "span": 437 + }, + { + "kind": { + "StorageDead": 53 + }, + "span": 461 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 86 + }, + { + "Type": 87 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 462 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 463 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 450 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 450 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 464, + "ty": 90 + }, + { + "mutability": "Not", + "span": 465, + "ty": 92 + }, + { + "mutability": "Not", + "span": 466, + "ty": 63 + }, + { + "mutability": "Not", + "span": 467, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 468, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 396, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 401, + "ty": 86 + }, + { + "mutability": "Mut", + "span": 402, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 403, + "ty": 81 + }, + { + "mutability": "Not", + "span": 399, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 409, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 418, + "ty": 93 + }, + { + "mutability": "Mut", + "span": 419, + "ty": 89 + }, + { + "mutability": "Mut", + "span": 420, + "ty": 88 + }, + { + "mutability": "Mut", + "span": 421, + "ty": 58 + }, + { + "mutability": "Not", + "span": 460, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 461, + "ty": 86 + }, + { + "mutability": "Mut", + "span": 469, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 404, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 62 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 40 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 430, + "ty": 94 + }, + { + "mutability": "Mut", + "span": 431, + "ty": 58 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 410, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 412, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 413, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 62 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 451, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 156, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 40 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 27 + }, + { + "mutability": "Not", + "span": 456, + "ty": 72 + }, + { + "mutability": "Not", + "span": 458, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 430, + "ty": 94 + }, + { + "mutability": "Mut", + "span": 431, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 40 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 75 + } + ], + "span": 492, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 465 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 466 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "zeroed", + "source_info": { + "scope": 0, + "span": 467 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 470 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "raw_ptr", + "source_info": { + "scope": 2, + "span": 399 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 471 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "residual", + "source_info": { + "scope": 4, + "span": 472 + }, + "value": { + "Const": { + "const_": { + "id": 51, + "kind": "ZeroSized", + "ty": 91 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "val", + "source_info": { + "scope": 6, + "span": 460 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 392 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 473 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 393 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 208 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 12, + "span": 474 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 13, + "span": 475 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 16, + "span": 476 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 16, + "span": 477 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 478, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 346 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 18, + "span": 479 + }, + "value": { + "Place": { + "local": 30, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 18, + "span": 480 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 478, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 19, + "span": 481 + }, + "value": { + "Place": { + "local": 30, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 19, + "span": 482 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 478, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 20, + "span": 475 + }, + "value": { + "Place": { + "local": 29, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "layout", + "source_info": { + "scope": 23, + "span": 483 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 392 + }, + "value": { + "Place": { + "local": 34, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 25, + "span": 393 + }, + "value": { + "Place": { + "local": 36, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 26, + "span": 208 + }, + "value": { + "Place": { + "local": 37, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 27, + "span": 484 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 28, + "span": 164 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 29, + "span": 165 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 30, + "span": 166 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 31, + "span": 167 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 32, + "span": 475 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 35, + "span": 485 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "err", + "source_info": { + "scope": 35, + "span": 486 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 36, + "span": 456 + }, + "value": { + "Place": { + "local": 49, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 37, + "span": 487 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 38, + "span": 458 + }, + "value": { + "Place": { + "local": 50, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "e", + "source_info": { + "scope": 39, + "span": 488 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 40, + "span": 476 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 40, + "span": 477 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 41, + "span": 346 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 42, + "span": 479 + }, + "value": { + "Place": { + "local": 52, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 42, + "span": 480 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 43, + "span": 481 + }, + "value": { + "Place": { + "local": 52, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 43, + "span": 482 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 44, + "span": 475 + }, + "value": { + "Place": { + "local": 51, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "residual", + "source_info": { + "scope": 47, + "span": 489 + }, + "value": { + "Const": { + "const_": { + "id": 51, + "kind": "ZeroSized", + "ty": 91 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "e", + "source_info": { + "scope": 48, + "span": 490 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "t", + "source_info": { + "scope": 49, + "span": 491 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 24, + "name": "std::alloc::Global::alloc_impl" + } + }, + "symbol_name": "_ZN5alloc5alloc6Global10alloc_impl17h387bc55e46abbdf8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 493, + "user_ty": null + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 3 + } + } + }, + "span": 493 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 495 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 95 + ] + }, + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 495 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 4 + } + } + }, + "span": 494 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 497 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 3 + } + }, + "span": 496 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 0, + [ + { + "Type": 96 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 499 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 498 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 497 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 319 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 501 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 9 + ] + } + ] + }, + "span": 502 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 503 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 95 + ] + }, + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 503 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 500 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 7 + ] + ], + "otherwise": 6 + } + } + }, + "span": 500 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 504 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 30, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 505, + "user_ty": null + } + }, + "target": 7, + "unwind": "Unreachable" + } + }, + "span": 506 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 507 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "MulUnchecked", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 508 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 509 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 509 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 195 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 196 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 15, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 197 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 198 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 510 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 511 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 511 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 1, + 77 + ] + } + ] + } + } + } + ] + }, + "span": 511 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 512 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 513 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 513 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 13, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 514 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 515 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 512 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 516 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Copy": { + "local": 7, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 510 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 1, + [ + { + "Type": 96 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 517 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 518 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 498 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 519, + "ty": 97 + }, + { + "mutability": "Not", + "span": 520, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 495, + "ty": 28 + }, + { + "mutability": "Not", + "span": 521, + "ty": 28 + }, + { + "mutability": "Not", + "span": 522, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 501, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 503, + "ty": 28 + }, + { + "mutability": "Not", + "span": 523, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 510, + "ty": 96 + }, + { + "mutability": "Mut", + "span": 500, + "ty": 40 + }, + { + "mutability": "Not", + "span": 506, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 195, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 524, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 513, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 511, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 511, + "ty": 77 + } + ], + "span": 532, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 520 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 521 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 2, + "span": 522 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 3, + "span": 523 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 525 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 6, + "span": 526 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 9, + "span": 211 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 9, + "span": 212 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 10, + "span": 213 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 11, + "span": 527 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 11, + "span": 527 + }, + "value": { + "Place": { + "local": 16, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 12, + "span": 528 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 346 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 14, + "span": 529 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 14, + "span": 529 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "unique", + "source_info": { + "scope": 15, + "span": 530 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "unique", + "source_info": { + "scope": 15, + "span": 530 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 16, + "span": 531 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 16, + "span": 531 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 27, + "name": "alloc::raw_vec::RawVec::::current_memory" + } + }, + "symbol_name": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h51fad278440e28deE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 533, + "user_ty": null + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 533 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 534 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 535 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 536 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 536 + }, + { + "kind": { + "StorageLive": 25 + }, + "span": 537 + }, + { + "kind": { + "StorageLive": 26 + }, + "span": 538 + }, + { + "kind": { + "StorageLive": 27 + }, + "span": 538 + }, + { + "kind": { + "StorageLive": 28 + }, + "span": 539 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 319 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 28, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 405 + }, + { + "kind": { + "StorageDead": 28 + }, + "span": 540 + }, + { + "kind": { + "StorageLive": 32 + }, + "span": 541 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 400 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 29, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 21 + ] + ], + "otherwise": 19 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 544 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 545 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 546 + }, + { + "kind": { + "Assign": [ + { + "local": 33, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 9 + ] + } + ] + }, + "span": 502 + }, + { + "kind": { + "StorageLive": 34 + }, + "span": 547 + }, + { + "kind": { + "StorageLive": 35 + }, + "span": 548 + }, + { + "kind": { + "Assign": [ + { + "local": 35, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 319 + }, + { + "kind": { + "Assign": [ + { + "local": 34, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 35, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 196 + }, + { + "kind": { + "StorageDead": 35 + }, + "span": 549 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 33, + "projection": [] + } + }, + { + "Move": { + "local": 34, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 54, + "kind": "ZeroSized", + "ty": 98 + }, + "span": 542, + "user_ty": null + } + }, + "target": 22, + "unwind": { + "Cleanup": 18 + } + } + }, + "span": 543 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 545 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 1, + [ + { + "Type": 52 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 55, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 70 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 550 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 551 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 15 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 7, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 63 + ] + } + ] + } + } + } + ] + }, + "span": 553 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [] + } + } + } + ] + }, + "span": 554 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 551 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 555 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 556 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 6, + "projection": [] + } + ] + } + ] + }, + "span": 556 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 372 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 557 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 558 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 559 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [] + } + } + ] + }, + "span": 560 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 13, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ], + [ + 1, + 7 + ] + ], + "otherwise": 4 + } + } + }, + "span": 552 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 15 + }, + "span": 563 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 563 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Copy": { + "local": 9, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 56, + "kind": "ZeroSized", + "ty": 99 + }, + "span": 561, + "user_ty": null + } + }, + "target": 10, + "unwind": { + "Cleanup": 18 + } + } + }, + "span": 562 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 14 + }, + "span": 566 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 566 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 14, + "projection": [] + } + }, + { + "Copy": { + "local": 9, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 57, + "kind": "ZeroSized", + "ty": 100 + }, + "span": 564, + "user_ty": null + } + }, + "target": 9, + "unwind": { + "Cleanup": 18 + } + } + }, + "span": 565 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 14 + }, + "span": 567 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 11 + } + }, + "span": 567 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 15 + }, + "span": 568 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 11 + } + }, + "span": 568 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Discriminant": { + "local": 12, + "projection": [] + } + } + ] + }, + "span": 570 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 16, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 13 + ], + [ + 1, + 12 + ] + ], + "otherwise": 4 + } + } + }, + "span": 569 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 18 + }, + "span": 571 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 572 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 29, + 1, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 9, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 572 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 30, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 19, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 573 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 574 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 1, + [ + { + "Type": 52 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 18, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 575 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 576 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 577 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 15 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 12, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 86 + ] + } + ] + } + } + } + ] + }, + "span": 579 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 580 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 581 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 582 + }, + { + "kind": { + "StorageLive": 37 + }, + "span": 583 + }, + { + "kind": { + "StorageLive": 36 + }, + "span": 513 + }, + { + "kind": { + "Assign": [ + { + "local": 37, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [ + { + "Field": [ + 0, + 75 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 36, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 37, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 513 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 36, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 514 + }, + { + "kind": { + "StorageDead": 36 + }, + "span": 515 + }, + { + "kind": { + "StorageDead": 37 + }, + "span": 583 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 31, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 22, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 584 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 585 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 586 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 32, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 587 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 588 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 588 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 33, + 0, + [ + { + "Type": 9 + }, + { + "Type": 22 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 21, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + }, + { + "Move": { + "local": 24, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 580 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 589 + }, + { + "kind": { + "StorageDead": 23 + }, + "span": 589 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 589 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 52 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 20, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 590 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 591 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 577 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 577 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 578 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 16 + } + }, + "span": 592 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 577 + } + ], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 3, + "projection": [] + }, + "target": 16, + "unwind": "Continue" + } + }, + "span": 592 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 593 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 594 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 3, + "projection": [] + }, + "target": 17, + "unwind": "Terminate" + } + }, + "span": 592 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 31 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 31, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 27, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 31, + "projection": [] + } + } + ], + "destination": { + "local": 30, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 20, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 31 + }, + "span": 426 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 21 + } + }, + "span": 435 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 29 + }, + "span": 453 + }, + { + "kind": { + "Assign": [ + { + "local": 32, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 27, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 26, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 32, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 32 + }, + "span": 541 + }, + { + "kind": { + "StorageDead": 27 + }, + "span": 538 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 31, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 26, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 595 + }, + { + "kind": { + "StorageDead": 26 + }, + "span": 596 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 33, + 0, + [ + { + "Type": 9 + }, + { + "Type": 22 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 25, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 58, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 95 + }, + "span": 597, + "user_ty": null + } + }, + { + "Copy": { + "local": 5, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 598 + }, + { + "kind": { + "StorageDead": 25 + }, + "span": 599 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 600 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 52 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 601 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 602 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 578 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 34 + }, + "span": 604 + }, + { + "kind": { + "StorageDead": 33 + }, + "span": 604 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Discriminant": { + "local": 7, + "projection": [] + } + } + ] + }, + "span": 545 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 8, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 6 + ], + [ + 1, + 5 + ] + ], + "otherwise": 4 + } + } + }, + "span": 603 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 605, + "ty": 74 + }, + { + "mutability": "Not", + "span": 606, + "ty": 28 + }, + { + "mutability": "Not", + "span": 607, + "ty": 68 + }, + { + "mutability": "Not", + "span": 608, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 535, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 536, + "ty": 22 + }, + { + "mutability": "Not", + "span": 544, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 545, + "ty": 60 + }, + { + "mutability": "Mut", + "span": 609, + "ty": 6 + }, + { + "mutability": "Not", + "span": 553, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 555, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 556, + "ty": 81 + }, + { + "mutability": "Not", + "span": 559, + "ty": 90 + }, + { + "mutability": "Mut", + "span": 610, + "ty": 6 + }, + { + "mutability": "Mut", + "span": 566, + "ty": 92 + }, + { + "mutability": "Mut", + "span": 563, + "ty": 92 + }, + { + "mutability": "Mut", + "span": 611, + "ty": 6 + }, + { + "mutability": "Not", + "span": 579, + "ty": 86 + }, + { + "mutability": "Mut", + "span": 571, + "ty": 70 + }, + { + "mutability": "Mut", + "span": 572, + "ty": 101 + }, + { + "mutability": "Mut", + "span": 580, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 581, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 582, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 586, + "ty": 95 + }, + { + "mutability": "Mut", + "span": 588, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 537, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 538, + "ty": 72 + }, + { + "mutability": "Not", + "span": 612, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 539, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 40 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 546, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 547, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 548, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 513, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 75 + } + ], + "span": 594, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "capacity", + "source_info": { + "scope": 0, + "span": 606 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "init", + "source_info": { + "scope": 0, + "span": 607 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 0, + "span": 608 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 1, + "span": 544 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 2, + "span": 553 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "err", + "source_info": { + "scope": 3, + "span": 613 + }, + "value": { + "Const": { + "const_": { + "id": 59, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 128, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 70 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 4, + "span": 559 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 5, + "span": 614 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 6, + "span": 579 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 7, + "span": 615 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 10, + "span": 612 + }, + "value": { + "Place": { + "local": 27, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 13, + "span": 474 + }, + "value": { + "Place": { + "local": 28, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 14, + "span": 475 + }, + "value": { + "Place": { + "local": 27, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "n", + "source_info": { + "scope": 17, + "span": 616 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 21, + "span": 213 + }, + "value": { + "Place": { + "local": 35, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 22, + "span": 529 + }, + "value": { + "Const": { + "const_": { + "id": 60, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 101 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "kind", + "source_info": { + "scope": 23, + "span": 617 + }, + "value": { + "Const": { + "const_": { + "id": 60, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 101 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 392 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "alloc_size", + "source_info": { + "scope": 25, + "span": 618 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 26, + "span": 529 + }, + "value": { + "Const": { + "const_": { + "id": 61, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 101 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "kind", + "source_info": { + "scope": 27, + "span": 617 + }, + "value": { + "Const": { + "const_": { + "id": 61, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 101 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 28, + "span": 529 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "kind", + "source_info": { + "scope": 29, + "span": 617 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 30, + "span": 528 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 31, + "span": 346 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pointer", + "source_info": { + "scope": 32, + "span": 619 + }, + "value": { + "Place": { + "local": 22, + "projection": [] + } + } + } + ] + } + ], + "id": 28, + "name": "alloc::raw_vec::RawVec::::try_allocate_in" + } + }, + "symbol_name": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17hd069999b4f72609fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 621 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 621 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 372 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 622 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 620 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 625 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Move": { + "local": 8, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 626 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 627 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 627 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 628 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [] + } + ] + } + ] + }, + "span": 628 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 629 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 630 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 631 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [] + } + ] + } + ] + }, + "span": 631 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 62 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 12, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Discriminant": { + "local": 13, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 17, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 378 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 632 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 62, + "kind": "ZeroSized", + "ty": 102 + }, + "span": 623, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 624 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 633 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 635 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 636 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 636 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 2 + } + }, + "span": 634 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 637, + "ty": 1 + }, + { + "mutability": "Not", + "span": 638, + "ty": 92 + }, + { + "mutability": "Not", + "span": 639, + "ty": 72 + }, + { + "mutability": "Not", + "span": 640, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 641, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 621, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 625, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 627, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 628, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 630, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 631, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 62 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + } + ], + "span": 644, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 638 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 0, + "span": 639 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 640 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 392 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 346 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 642 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 3, + "span": 643 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 392 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 393 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 208 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + } + ] + } + ], + "id": 34, + "name": "::deallocate" + } + }, + "symbol_name": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb55a7883c826734eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 64, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 1 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 646, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 63, + "kind": "ZeroSized", + "ty": 103 + }, + "span": 645, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 647 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 648 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 649, + "ty": 90 + }, + { + "mutability": "Not", + "span": 650, + "ty": 92 + }, + { + "mutability": "Not", + "span": 651, + "ty": 63 + } + ], + "span": 652, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 650 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 651 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 35, + "name": "::allocate_zeroed" + } + }, + "symbol_name": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$15allocate_zeroed17h30a56ef2f8488920E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 654, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 63, + "kind": "ZeroSized", + "ty": 103 + }, + "span": 653, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 655 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 656 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 657, + "ty": 90 + }, + { + "mutability": "Not", + "span": 658, + "ty": 92 + }, + { + "mutability": "Not", + "span": 659, + "ty": 63 + } + ], + "span": 660, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 658 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 659 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 36, + "name": "::allocate" + } + }, + "symbol_name": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbc10084ba40edd1aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 75, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 10 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 771, + "user_ty": null + } + } + } + ] + }, + "span": 771 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 74, + "kind": "ZeroSized", + "ty": 116 + }, + "span": 769, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 770 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 772 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 773, + "ty": 24 + }, + { + "mutability": "Not", + "span": 774, + "ty": 117 + }, + { + "mutability": "Mut", + "span": 771, + "ty": 25 + } + ], + "span": 775, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 774 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 41, + "name": "::summarise" + } + }, + "symbol_name": "_ZN67_$LT$defined_trait..Container$u20$as$u20$defined_trait..Summary$GT$9summarise17h1a2582435aa6d75bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 663 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 664 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 306 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 52 + ] + } + ] + } + ] + } + ] + }, + "span": 306 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 307 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 52 + ] + }, + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 308 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 7, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 626 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 307 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 311 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 665 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 665 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 432 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 666 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 666 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 65, + "kind": "ZeroSized", + "ty": 104 + }, + "span": 661, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 662 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 668 + } + ], + "terminator": { + "kind": "Return", + "span": 667 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 669, + "ty": 1 + }, + { + "mutability": "Not", + "span": 670, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 663, + "ty": 94 + }, + { + "mutability": "Mut", + "span": 664, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 665, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 306, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 308, + "ty": 72 + } + ], + "span": 671, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 670 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 343 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 344 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 3, + "span": 345 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 3, + "span": 345 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 346 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 5, + "span": 479 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 5, + "span": 480 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 6, + "span": 481 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 6, + "span": 482 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + } + ] + } + ], + "id": 37, + "name": " as std::ops::Drop>::drop" + } + }, + "symbol_name": "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1a5ac00d73e54207E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 672 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 673 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 673 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 674 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 674 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Ne", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 672 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 672 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 676 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 676 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 677, + "user_ty": null + } + } + } + ] + }, + "span": 677 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 678 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 675 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 676 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 676 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 678 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 681 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 681 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 66, + "kind": "ZeroSized", + "ty": 105 + }, + "span": 679, + "user_ty": null + } + }, + "target": 5, + "unwind": "Unreachable" + } + }, + "span": 680 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 682 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 682 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 67, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 683, + "user_ty": null + } + } + ] + } + ] + }, + "span": 684 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 683 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 675 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 675 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 687 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 686 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 688 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 302 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 688 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 689 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 2, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 302 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 689 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 68, + "kind": "ZeroSized", + "ty": 106 + }, + "span": 685, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 686 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 690, + "ty": 40 + }, + { + "mutability": "Not", + "span": 691, + "ty": 23 + }, + { + "mutability": "Not", + "span": 692, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 672, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 673, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 674, + "ty": 28 + }, + { + "mutability": "Not", + "span": 693, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 686, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 688, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 689, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 681, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 75 + } + ], + "span": 695, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 691 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 692 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 693 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "val", + "source_info": { + "scope": 2, + "span": 694 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 342 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 342 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 38, + "name": "<[u8] as core::slice::cmp::SlicePartialEq>::equal" + } + }, + "symbol_name": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17heed7f68f230f2160E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 697 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 698 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 698 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 69, + "kind": "ZeroSized", + "ty": 107 + }, + "span": 696, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 697 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 700 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [] + } + } + ] + }, + "span": 697 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 2 + ], + [ + 0, + 4 + ] + ], + "otherwise": 5 + } + } + }, + "span": 699 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 96 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 703 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 96 + ] + }, + { + "Field": [ + 1, + 63 + ] + } + ] + } + } + } + ] + }, + "span": 704 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 705 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 2, + 22 + ] + } + ] + } + ] + } + ] + }, + "span": 705 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 70, + "kind": "ZeroSized", + "ty": 108 + }, + "span": 701, + "user_ty": null + } + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 702 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 707 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 706 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 709 + } + ], + "terminator": { + "kind": "Return", + "span": 708 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 710 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 711, + "ty": 1 + }, + { + "mutability": "Not", + "span": 712, + "ty": 57 + }, + { + "mutability": "Mut", + "span": 697, + "ty": 97 + }, + { + "mutability": "Mut", + "span": 698, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 699, + "ty": 6 + }, + { + "mutability": "Not", + "span": 703, + "ty": 72 + }, + { + "mutability": "Not", + "span": 704, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 705, + "ty": 92 + } + ], + "span": 710, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 712 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 703 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 1, + "span": 704 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + } + ] + } + ], + "id": 39, + "name": " as std::ops::Drop>::drop" + } + }, + "symbol_name": "_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1e2744d4a270a4c6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 14 + }, + "span": 714 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 715 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 715 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + } + ] + } + ] + } + ] + }, + "span": 715 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 716 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 717 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + }, + { + "Field": [ + 0, + 52 + ] + } + ] + } + ] + } + ] + }, + "span": 717 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 718 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + }, + { + "Field": [ + 0, + 52 + ] + }, + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 308 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 718 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 719 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 720 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + }, + { + "Field": [ + 1, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 720 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 713 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 11, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 713 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 13 + }, + "span": 723 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 723 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 13, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 71, + "kind": "ZeroSized", + "ty": 109 + }, + "span": 721, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 722 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 725 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 3 + } + }, + "span": 724 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 11 + }, + "span": 728 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Not" + ] + }, + [ + { + "Copy": { + "local": 7, + "projection": [] + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 729 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 730 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 730 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 14, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 715 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 731 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + 25 + ] + } + ] + }, + "span": 732 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 733 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 714 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 734 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 735 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 735 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 736 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + 23 + ] + } + ] + }, + "span": 47 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 16, + "projection": [] + } + ] + } + ] + }, + "span": 736 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 737 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 23 + ] + } + ] + }, + "span": 47 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 18, + "projection": [] + } + ] + } + ] + }, + "span": 737 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 16, + "projection": [] + } + }, + { + "Copy": { + "local": 18, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 72, + "kind": "ZeroSized", + "ty": 110 + }, + "span": 726, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 727 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 17 + }, + "span": 739 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 739 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 735 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 735 + } + ], + "terminator": { + "kind": "Return", + "span": 738 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 740, + "ty": 40 + }, + { + "mutability": "Not", + "span": 741, + "ty": 111 + }, + { + "mutability": "Not", + "span": 742, + "ty": 112 + }, + { + "mutability": "Mut", + "span": 742, + "ty": 25 + }, + { + "mutability": "Not", + "span": 743, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 715, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 715, + "ty": 113 + }, + { + "mutability": "Mut", + "span": 716, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 720, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 717, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 308, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 713, + "ty": 40 + }, + { + "mutability": "Not", + "span": 722, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 723, + "ty": 39 + }, + { + "mutability": "Not", + "span": 744, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 736, + "ty": 114 + }, + { + "mutability": "Not", + "span": 736, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 737, + "ty": 114 + }, + { + "mutability": "Not", + "span": 737, + "ty": 23 + } + ], + "span": 768, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 741 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 742 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 745 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 1, + "span": 746 + }, + "value": { + "Const": { + "const_": { + "id": 73, + "kind": "ZeroSized", + "ty": 115 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 747 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 748 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 749 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 750 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 344 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 7, + "span": 345 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 7, + "span": 345 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 346 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 9, + "span": 751 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 9, + "span": 752 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 14, + "span": 753 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 14, + "span": 754 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 15, + "span": 755 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 15, + "span": 756 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "v", + "source_info": { + "scope": 16, + "span": 757 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 758 + }, + "value": { + "Const": { + "const_": { + "id": 73, + "kind": "ZeroSized", + "ty": 115 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 17, + "span": 759 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 18, + "span": 760 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 18, + "span": 761 + }, + "value": { + "Const": { + "const_": { + "id": 73, + "kind": "ZeroSized", + "ty": 115 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 19, + "span": 758 + }, + "value": { + "Const": { + "const_": { + "id": 73, + "kind": "ZeroSized", + "ty": 115 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 19, + "span": 759 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 20, + "span": 762 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 20, + "span": 763 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 21, + "span": 56 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 22, + "span": 56 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 23, + "span": 764 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 23, + "span": 765 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 766 + }, + "value": { + "Place": { + "local": 16, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 24, + "span": 767 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + } + ] + } + ], + "id": 40, + "name": ">::eq" + } + }, + "symbol_name": "_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17hd089208062269690E" + } + ] +} diff --git a/tests/integration/programs/derive-copy-struct.rs b/tests/integration/programs/derive-copy-struct.rs new file mode 100644 index 0000000..d1960f7 --- /dev/null +++ b/tests/integration/programs/derive-copy-struct.rs @@ -0,0 +1,19 @@ +#[derive(Copy, Clone)] +struct Container { + number:u32, +} + +fn take_first_container(containers: &[Container]) -> Container { + containers[0] +} + +fn main() { + let con1 = Container { number: 42 }; + let con2 = Container { number: 24 }; + + let cons = [con1, con2]; + + let first:Container = take_first_container(&cons[..]); + + assert!(first.number == 42); +} \ No newline at end of file diff --git a/tests/integration/programs/derive-copy-struct.smir.json.expected b/tests/integration/programs/derive-copy-struct.smir.json.expected new file mode 100644 index 0000000..88b6034 --- /dev/null +++ b/tests/integration/programs/derive-copy-struct.smir.json.expected @@ -0,0 +1,2580 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 102, + 105, + 114, + 115, + 116, + 46, + 110, + 117, + 109, + 98, + 101, + 114, + 32, + 61, + 61, + 32, + 52, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h16e5330c2a1dc1adE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h8bc2e7fd57893035E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hb7db3fe2604a1199E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h849aaec59c3c4beaE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h57bb57d23469420bE" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core5slice5index74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17hc73b0fddf9c6e89dE" + } + ], + [ + 29, + { + "NormalSym": "_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hd1f3f35f6b6a4554E" + } + ], + [ + 33, + { + "NormalSym": "_ZN4core5array85_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$5index17h4dbf9d27bc3deff5E" + } + ], + [ + 35, + { + "NormalSym": "_ZN18derive_copy_struct20take_first_container17h5e6aa0bbd5320b00E" + } + ], + [ + 36, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 41, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 30 + }, + "span": 73, + "user_ty": null + } + } + } + ] + }, + "span": 73 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Len": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 72 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ] + } + ] + }, + "span": 72 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [] + } + }, + "expected": true, + "msg": { + "BoundsCheck": { + "index": { + "Copy": { + "local": 2, + "projection": [] + } + }, + "len": { + "Move": { + "local": 3, + "projection": [] + } + } + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 72 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Index": 2 + } + ] + } + } + } + ] + }, + "span": 72 + } + ], + "terminator": { + "kind": "Return", + "span": 74 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 75, + "ty": 31 + }, + { + "mutability": "Not", + "span": 76, + "ty": 26 + }, + { + "mutability": "Not", + "span": 73, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 32 + } + ], + "span": 77, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "containers", + "source_info": { + "scope": 0, + "span": 76 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 9, + "name": "take_first_container" + } + }, + "symbol_name": "_ZN18derive_copy_struct20take_first_container17h5e6aa0bbd5320b00E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 0, + [], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 34 + }, + "span": 79, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 80 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 0, + [], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 24, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 34 + }, + "span": 81, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 82 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Aggregate": [ + { + "Array": 31 + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 83 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 84 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 78, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 78 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 16, + "kind": "ZeroSized", + "ty": 35 + }, + "span": 85, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 86 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 4, + "projection": [ + { + "Field": [ + 0, + 34 + ] + } + ] + } + } + } + ] + }, + "span": 88 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 42, + 3 + ] + ], + "otherwise": 4 + } + } + }, + "span": 87 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 89 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 37 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 17, + "kind": "ZeroSized", + "ty": 36 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 90 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 91, + "ty": 1 + }, + { + "mutability": "Not", + "span": 92, + "ty": 31 + }, + { + "mutability": "Not", + "span": 93, + "ty": 31 + }, + { + "mutability": "Not", + "span": 94, + "ty": 38 + }, + { + "mutability": "Not", + "span": 95, + "ty": 31 + }, + { + "mutability": "Not", + "span": 78, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 88, + "ty": 34 + }, + { + "mutability": "Mut", + "span": 90, + "ty": 39 + } + ], + "span": 96, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "con1", + "source_info": { + "scope": 1, + "span": 92 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "con2", + "source_info": { + "scope": 2, + "span": 93 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "cons", + "source_info": { + "scope": 3, + "span": 94 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "first", + "source_info": { + "scope": 4, + "span": 95 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + } + ] + } + ], + "id": 10, + "name": "main" + } + }, + "symbol_name": "_ZN18derive_copy_struct4main17h7f2b938122f7e822E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h10e45513cdd171a5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h57bb57d23469420bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h16e5330c2a1dc1adE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h95668bf36d616210E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h849aaec59c3c4beaE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hb7db3fe2604a1199E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb8ac2c34a09be70eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 26 + ] + } + ] + }, + "span": 47 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 45, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 46 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 48 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 49, + "ty": 26 + }, + { + "mutability": "Not", + "span": 50, + "ty": 27 + }, + { + "mutability": "Not", + "span": 51, + "ty": 28 + }, + { + "mutability": "Not", + "span": 52, + "ty": 26 + } + ], + "span": 53, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 50 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 51 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 5, + "name": "std::array:: for [Container; 2]>::index" + } + }, + "symbol_name": "_ZN4core5array85_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$5index17h4dbf9d27bc3deff5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 1, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 54, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 55 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 57, + "ty": 26 + }, + { + "mutability": "Not", + "span": 58, + "ty": 26 + }, + { + "mutability": "Not", + "span": 59, + "ty": 28 + } + ], + "span": 60, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 58 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 59 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "core::slice::index:: for [Container]>::index" + } + }, + "symbol_name": "_ZN4core5slice5index74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17hc73b0fddf9c6e89dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 62, + "user_ty": null + } + } + } + ] + }, + "span": 62 + } + ], + "terminator": { + "kind": "Return", + "span": 61 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 63, + "ty": 17 + }, + { + "mutability": "Not", + "span": 64, + "ty": 1 + } + ], + "span": 65, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 64 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 7, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h8bc2e7fd57893035E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [] + } + } + } + ] + }, + "span": 67 + } + ], + "terminator": { + "kind": "Return", + "span": 66 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 68, + "ty": 26 + }, + { + "mutability": "Not", + "span": 69, + "ty": 28 + }, + { + "mutability": "Not", + "span": 70, + "ty": 26 + } + ], + "span": 71, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 69 + }, + "value": { + "Const": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 0, + "span": 70 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 8, + "name": ">::index" + } + }, + "symbol_name": "_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hd1f3f35f6b6a4554E" + } + ] +} diff --git a/tests/integration/programs/div.rs b/tests/integration/programs/div.rs new file mode 100644 index 0000000..616292c --- /dev/null +++ b/tests/integration/programs/div.rs @@ -0,0 +1,3 @@ +fn main() { + assert!(420 / 10 ==42); +} \ No newline at end of file diff --git a/tests/integration/programs/div.smir.json.expected b/tests/integration/programs/div.smir.json.expected new file mode 100644 index 0000000..8e0d0c1 --- /dev/null +++ b/tests/integration/programs/div.smir.json.expected @@ -0,0 +1,2047 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 52, + 50, + 48, + 32, + 47, + 32, + 49, + 48, + 32, + 61, + 61, + 32, + 52, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h64d1191ef34b9bc1E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h7ed9fb0895a27f30E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hea7b7593e501aefeE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hfade6072976a28f6E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h2993c2a6790fca01E" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 29, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 2, + "projection": [] + } + }, + "expected": false, + "msg": { + "DivisionByZero": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 164, + 1, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 50, + "user_ty": null + } + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 255, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 164, + 1, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 5, + "projection": [] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Div", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 164, + 1, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + } + ] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "BinaryOp": [ + "Div", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 164, + 1, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 42, + 3 + ] + ], + "otherwise": 4 + } + } + }, + "span": 53 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 55, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 55 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 56, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 28 + } + ], + "span": 57, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN3div4main17h71fa6a28c244cb1fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hcf20de394f35ad5dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h2993c2a6790fca01E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h64d1191ef34b9bc1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17he954194b4fcd00bfE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hea7b7593e501aefeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hfade6072976a28f6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h863a7b851113b2ceE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h7ed9fb0895a27f30E" + } + ] +} diff --git a/tests/integration/programs/double-ref-deref.rs b/tests/integration/programs/double-ref-deref.rs new file mode 100644 index 0000000..a91f8ac --- /dev/null +++ b/tests/integration/programs/double-ref-deref.rs @@ -0,0 +1,7 @@ +fn main() { + let a = 42; + let b = &a; + let c = &b; + + assert!(**c == 42); +} \ No newline at end of file diff --git a/tests/integration/programs/double-ref-deref.smir.json.expected b/tests/integration/programs/double-ref-deref.smir.json.expected new file mode 100644 index 0000000..7d19cc6 --- /dev/null +++ b/tests/integration/programs/double-ref-deref.smir.json.expected @@ -0,0 +1,1798 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 42, + 42, + 99, + 32, + 61, + 61, + 32, + 52, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hf9d0cc1c3b14cd54E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h984a68eef244fa6eE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h537e81d3d052cbb1E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hc6f736f3375605e4E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h4832dffd1cd541dcE" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 30, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + } + ] + }, + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 53 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "CopyForDeref": { + "local": 3, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 42, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 50 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 55 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 56, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 56 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 57, + "ty": 1 + }, + { + "mutability": "Not", + "span": 58, + "ty": 16 + }, + { + "mutability": "Not", + "span": 59, + "ty": 27 + }, + { + "mutability": "Not", + "span": 60, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 60, + "ty": 27 + } + ], + "span": 61, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 58 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 59 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "c", + "source_info": { + "scope": 3, + "span": 60 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN16double_ref_deref4main17h91fba97ff36c5fccE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h7879595fd7fe0ffbE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h4832dffd1cd541dcE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hf9d0cc1c3b14cd54E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h4d5385b298460ae7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h537e81d3d052cbb1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hc6f736f3375605e4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h6899baa79b5d50c3E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h984a68eef244fa6eE" + } + ] +} diff --git a/tests/integration/programs/enum.rs b/tests/integration/programs/enum.rs new file mode 100644 index 0000000..8b020d2 --- /dev/null +++ b/tests/integration/programs/enum.rs @@ -0,0 +1,10 @@ +#![allow(unused)] +#![allow(dead_code)] +enum Letter { + A, + B, +} + +fn main() { + let a = Letter::A; +} \ No newline at end of file diff --git a/tests/integration/programs/enum.smir.json.expected b/tests/integration/programs/enum.smir.json.expected new file mode 100644 index 0000000..c3163ed --- /dev/null +++ b/tests/integration/programs/enum.smir.json.expected @@ -0,0 +1,1500 @@ +{ + "allocs": [], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17he982f1804e60d9caE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h8d0dab3da83a2eb4E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17had7be3e3af3ffd6aE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h65f703896e5e55f2E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h1cb035a01127d8feE" + } + ], + [ + 26, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17ha39a2a569a41c338E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h1cb035a01127d8feE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17he982f1804e60d9caE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h0a5309ab9e4a463dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h65f703896e5e55f2E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17had7be3e3af3ffd6aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8b89655b9ba64c0bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": "Return", + "span": 50 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 53, + "ty": 25 + } + ], + "span": 54, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 53 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN4enum4main17h578c4aafc4e87126E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h8d0dab3da83a2eb4E" + } + ] +} diff --git a/tests/integration/programs/fibonacci.rs b/tests/integration/programs/fibonacci.rs new file mode 100644 index 0000000..aa06798 --- /dev/null +++ b/tests/integration/programs/fibonacci.rs @@ -0,0 +1,13 @@ +fn fibonacci(n:u32) -> u32 { + match n { + 0 => 0, + 1 => 1, + _ => fibonacci(n - 2) + fibonacci(n - 1), + } +} + +fn main() { + let ans = fibonacci(5); + + assert!(ans == 5); +} \ No newline at end of file diff --git a/tests/integration/programs/fibonacci.smir.json.expected b/tests/integration/programs/fibonacci.smir.json.expected new file mode 100644 index 0000000..da7e5b8 --- /dev/null +++ b/tests/integration/programs/fibonacci.smir.json.expected @@ -0,0 +1,2355 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 110, + 115, + 32, + 61, + 61, + 32, + 53 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h9592af04f080b6ddE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hdd617c230efb569eE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h3c3b44f3e5bc617eE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h3510792785d7cbb1E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he1dd627769ba43a1E" + } + ], + [ + 27, + { + "NormalSym": "_ZN9fibonacci9fibonacci17haf9f059a822166cdE" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 32, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17ha7f92b0685306b3cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he1dd627769ba43a1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h9592af04f080b6ddE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h723634910b4137c7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h3510792785d7cbb1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h3c3b44f3e5bc617eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h49212ee6f8ae9726E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hdd617c230efb569eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 5, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 68, + "user_ty": null + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 67, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 69 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 5, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 70 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 71 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 72, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 72 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 1 + }, + { + "mutability": "Not", + "span": 74, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 31 + } + ], + "span": 75, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "ans", + "source_info": { + "scope": 1, + "span": 74 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "main" + } + }, + "symbol_name": "_ZN9fibonacci4main17h84048a605568c1d4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 50 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 51, + "user_ty": null + } + } + ] + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 53, + "user_ty": null + } + } + } + ] + }, + "span": 53 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 9 + } + }, + "span": 53 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 54, + "user_ty": null + } + } + } + ] + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 9 + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 55, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 57, + "user_ty": null + } + } + ] + } + ] + }, + "span": 58 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 7, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 57, + "user_ty": null + } + } + ] + }, + "target": 6, + "unwind": "Continue" + } + }, + "span": 58 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 7, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 58 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 59, + "user_ty": null + } + }, + "target": 7, + "unwind": "Continue" + } + }, + "span": 60 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 8, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + }, + "target": 8, + "unwind": "Continue" + } + }, + "span": 61 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 8, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 9 + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 63 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 64, + "ty": 26 + }, + { + "mutability": "Not", + "span": 65, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 60, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 58, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 58, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 61, + "ty": 28 + } + ], + "span": 66, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "n", + "source_info": { + "scope": 0, + "span": 65 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "fibonacci" + } + }, + "symbol_name": "_ZN9fibonacci9fibonacci17haf9f059a822166cdE" + } + ] +} diff --git a/tests/integration/programs/float.rs b/tests/integration/programs/float.rs new file mode 100644 index 0000000..3e1c38b --- /dev/null +++ b/tests/integration/programs/float.rs @@ -0,0 +1,11 @@ +fn main() { + let a:f32 = 3.5; + let b:f32 = 1.2; + + assert!(a + b == 4.7); + + let c:f64 = 3.5; + let d:f64 = 1.2; + + assert!(c + d == 4.7); +} \ No newline at end of file diff --git a/tests/integration/programs/float.smir.json.expected b/tests/integration/programs/float.smir.json.expected new file mode 100644 index 0000000..da5414b --- /dev/null +++ b/tests/integration/programs/float.smir.json.expected @@ -0,0 +1,2251 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 43, + 32, + 98, + 32, + 61, + 61, + 32, + 52, + 46, + 55 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 99, + 32, + 43, + 32, + 100, + 32, + 61, + 61, + 32, + 52, + 46, + 55 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hec1eb5b3a95108a0E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h13440d706a00baf7E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h24da6f29609285ddE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17he234f85ee35f62efE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h4a15e8b61fa38dcdE" + } + ], + [ + 27, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 31, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17he1d7ccefaa6dc143E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h4a15e8b61fa38dcdE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hec1eb5b3a95108a0E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h207239d44f06c48eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h24da6f29609285ddE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17he234f85ee35f62efE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17ha117c841898d56b9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h13440d706a00baf7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 96, + 64 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 51, + "user_ty": null + } + } + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 154, + 153, + 153, + 63 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 53, + "user_ty": null + } + } + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "BinaryOp": [ + "Add", + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 102, + 102, + 150, + 64 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 56, + "user_ty": null + } + } + ] + } + ] + }, + "span": 50 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 50 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 12, + 64 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 58, + "user_ty": null + } + } + } + ] + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 51, + 51, + 51, + 51, + 51, + 51, + 243, + 63 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 60, + "user_ty": null + } + } + } + ] + }, + "span": 61 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Add", + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + } + ] + } + ] + }, + "span": 62 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 205, + 204, + 204, + 204, + 204, + 204, + 18, + 64 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 63, + "user_ty": null + } + } + ] + } + ] + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 57 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 15, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 64, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 64 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 65 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 15, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 66, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 66 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 67, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 50, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 64, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 62, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 61, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 30 + } + ], + "span": 72, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 68 + }, + "value": { + "Const": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 96, + 64 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 51, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 69 + }, + "value": { + "Const": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 154, + 153, + 153, + 63 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 53, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "c", + "source_info": { + "scope": 3, + "span": 70 + }, + "value": { + "Const": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 12, + 64 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 58, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "d", + "source_info": { + "scope": 4, + "span": 71 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 51, + 51, + 51, + 51, + 51, + 51, + 243, + 63 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 60, + "user_ty": null + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN5float4main17hba1d3d01398882abE" + } + ] +} diff --git a/tests/integration/programs/generic.rs b/tests/integration/programs/generic.rs new file mode 100644 index 0000000..df71801 --- /dev/null +++ b/tests/integration/programs/generic.rs @@ -0,0 +1,14 @@ +fn index_slice(slice:&[T], index: usize) -> &T { + &(slice[index]) +} + +fn main() { + let numbers = [1, 2, 3, 4, 5]; + let letters = ['a', 'b', 'c', 'd', 'e']; + + let middle_number:&i32 = index_slice(&numbers[..], 2); + let middle_letter:&char = index_slice(&letters[..], 2); + + assert!(*middle_number == 3); + assert!(*middle_letter == 'c'); +} \ No newline at end of file diff --git a/tests/integration/programs/generic.smir.json.expected b/tests/integration/programs/generic.smir.json.expected new file mode 100644 index 0000000..c1c0e94 --- /dev/null +++ b/tests/integration/programs/generic.smir.json.expected @@ -0,0 +1,3647 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 42, + 109, + 105, + 100, + 100, + 108, + 101, + 95, + 110, + 117, + 109, + 98, + 101, + 114, + 32, + 61, + 61, + 32, + 51 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 42, + 109, + 105, + 100, + 100, + 108, + 101, + 95, + 108, + 101, + 116, + 116, + 101, + 114, + 32, + 61, + 61, + 32, + 39, + 99, + 39 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hea2d76cc64f5da0bE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h3294533c6832f1ebE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h9c63d3cb820058e9E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h69bc9c68da00ee1dE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h61748e495429d1d3E" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core5slice5index74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17hf106b89777207b2bE" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core5slice5index74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h1189d49f8f7ab385E" + } + ], + [ + 32, + { + "NormalSym": "_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc84cc97dcb68f0ccE" + } + ], + [ + 33, + { + "NormalSym": "_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb38d4c098f158998E" + } + ], + [ + 38, + { + "NormalSym": "_ZN4core5array85_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$5index17hc486aadb73e3df07E" + } + ], + [ + 40, + { + "NormalSym": "_ZN7generic11index_slice17hb47d8d47e6482c76E" + } + ], + [ + 41, + { + "NormalSym": "_ZN4core5array85_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$5index17he454f169d3435272E" + } + ], + [ + 42, + { + "NormalSym": "_ZN7generic11index_slice17h40d46dc9ff7722aeE" + } + ], + [ + 43, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 49, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hbb296b96ad86ac07E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h61748e495429d1d3E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hea2d76cc64f5da0bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h2a5244da1ffe2c6aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h69bc9c68da00ee1dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h9c63d3cb820058e9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8e456511e5036082E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 26 + ] + } + ] + }, + "span": 47 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 45, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 46 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 48 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 49, + "ty": 26 + }, + { + "mutability": "Not", + "span": 50, + "ty": 27 + }, + { + "mutability": "Not", + "span": 51, + "ty": 28 + }, + { + "mutability": "Not", + "span": 52, + "ty": 26 + } + ], + "span": 53, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 50 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 51 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 5, + "name": "std::array:: for [i32; 5]>::index" + } + }, + "symbol_name": "_ZN4core5array85_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$5index17hc486aadb73e3df07E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 30 + ] + } + ] + }, + "span": 47 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 45, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 46 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 48 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 49, + "ty": 30 + }, + { + "mutability": "Not", + "span": 50, + "ty": 31 + }, + { + "mutability": "Not", + "span": 51, + "ty": 28 + }, + { + "mutability": "Not", + "span": 52, + "ty": 30 + } + ], + "span": 53, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 50 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 51 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 5, + "name": "std::array:: for [char; 5]>::index" + } + }, + "symbol_name": "_ZN4core5array85_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$5index17he454f169d3435272E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 1, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 54, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 55 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 57, + "ty": 30 + }, + { + "mutability": "Not", + "span": 58, + "ty": 30 + }, + { + "mutability": "Not", + "span": 59, + "ty": 28 + } + ], + "span": 60, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 58 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 59 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "core::slice::index:: for [char]>::index" + } + }, + "symbol_name": "_ZN4core5slice5index74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h1189d49f8f7ab385E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 1, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 54, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 55 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 57, + "ty": 26 + }, + { + "mutability": "Not", + "span": 58, + "ty": 26 + }, + { + "mutability": "Not", + "span": 59, + "ty": 28 + } + ], + "span": 60, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 58 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 59 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "core::slice::index:: for [i32]>::index" + } + }, + "symbol_name": "_ZN4core5slice5index74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17hf106b89777207b2bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 62, + "user_ty": null + } + } + } + ] + }, + "span": 62 + } + ], + "terminator": { + "kind": "Return", + "span": 61 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 63, + "ty": 17 + }, + { + "mutability": "Not", + "span": 64, + "ty": 1 + } + ], + "span": 65, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 64 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 7, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h3294533c6832f1ebE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Len": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 72 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ] + } + ] + }, + "span": 72 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [] + } + }, + "expected": true, + "msg": { + "BoundsCheck": { + "index": { + "Copy": { + "local": 2, + "projection": [] + } + }, + "len": { + "Move": { + "local": 3, + "projection": [] + } + } + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 72 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Index": 2 + } + ] + } + ] + } + ] + }, + "span": 74 + } + ], + "terminator": { + "kind": "Return", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 75, + "ty": 34 + }, + { + "mutability": "Not", + "span": 76, + "ty": 30 + }, + { + "mutability": "Not", + "span": 77, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 36 + } + ], + "span": 78, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "slice", + "source_info": { + "scope": 0, + "span": 76 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 77 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 9, + "name": "index_slice::" + } + }, + "symbol_name": "_ZN7generic11index_slice17h40d46dc9ff7722aeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Len": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 72 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ] + } + ] + }, + "span": 72 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [] + } + }, + "expected": true, + "msg": { + "BoundsCheck": { + "index": { + "Copy": { + "local": 2, + "projection": [] + } + }, + "len": { + "Move": { + "local": 3, + "projection": [] + } + } + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 72 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Index": 2 + } + ] + } + ] + } + ] + }, + "span": 74 + } + ], + "terminator": { + "kind": "Return", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 75, + "ty": 37 + }, + { + "mutability": "Not", + "span": 76, + "ty": 26 + }, + { + "mutability": "Not", + "span": 77, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 36 + } + ], + "span": 78, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "slice", + "source_info": { + "scope": 0, + "span": 76 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 77 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 9, + "name": "index_slice::" + } + }, + "symbol_name": "_ZN7generic11index_slice17hb47d8d47e6482c76E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Array": 16 + }, + [ + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 80, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 81, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 82, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 4, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 83, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 5, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 84, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + { + "Array": 39 + }, + [ + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 97, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 39 + }, + "span": 86, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 98, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 39 + }, + "span": 87, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 99, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 39 + }, + "span": 88, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 100, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 39 + }, + "span": 89, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 24, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 101, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 39 + }, + "span": 90, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 91 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 92 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 38 + }, + "span": 79, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 79 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 35 + }, + "span": 94, + "user_ty": null + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 25, + "kind": "ZeroSized", + "ty": 40 + }, + "span": 93, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 95 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 97 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 27, + "kind": "ZeroSized", + "ty": 41 + }, + "span": 96, + "user_ty": null + } + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 96 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 7, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 35 + }, + "span": 99, + "user_ty": null + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 28, + "kind": "ZeroSized", + "ty": 42 + }, + "span": 98, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 100 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 102 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 3, + 5 + ] + ], + "otherwise": 6 + } + } + }, + "span": 101 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 104 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 11, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 99, + 7 + ] + ], + "otherwise": 8 + } + } + }, + "span": 103 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 30, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 37, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 44 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 29, + "kind": "ZeroSized", + "ty": 43 + }, + "span": 105, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 105 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 106 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 31, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 44 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 29, + "kind": "ZeroSized", + "ty": 43 + }, + "span": 107, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 107 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 108, + "ty": 1 + }, + { + "mutability": "Not", + "span": 109, + "ty": 45 + }, + { + "mutability": "Not", + "span": 110, + "ty": 46 + }, + { + "mutability": "Not", + "span": 95, + "ty": 37 + }, + { + "mutability": "Not", + "span": 79, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 27 + }, + { + "mutability": "Not", + "span": 100, + "ty": 34 + }, + { + "mutability": "Not", + "span": 96, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 97, + "ty": 31 + }, + { + "mutability": "Mut", + "span": 102, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 105, + "ty": 47 + }, + { + "mutability": "Mut", + "span": 104, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 107, + "ty": 47 + } + ], + "span": 113, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "numbers", + "source_info": { + "scope": 1, + "span": 109 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "letters", + "source_info": { + "scope": 2, + "span": 110 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "middle_number", + "source_info": { + "scope": 3, + "span": 111 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "middle_letter", + "source_info": { + "scope": 4, + "span": 112 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + } + ] + } + ], + "id": 10, + "name": "main" + } + }, + "symbol_name": "_ZN7generic4main17h7a9d065ae1987732E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [] + } + } + } + ] + }, + "span": 67 + } + ], + "terminator": { + "kind": "Return", + "span": 66 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 68, + "ty": 26 + }, + { + "mutability": "Not", + "span": 69, + "ty": 28 + }, + { + "mutability": "Not", + "span": 70, + "ty": 26 + } + ], + "span": 71, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 69 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 0, + "span": 70 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 8, + "name": ">::index" + } + }, + "symbol_name": "_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb38d4c098f158998E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [] + } + } + } + ] + }, + "span": 67 + } + ], + "terminator": { + "kind": "Return", + "span": 66 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 68, + "ty": 30 + }, + { + "mutability": "Not", + "span": 69, + "ty": 28 + }, + { + "mutability": "Not", + "span": 70, + "ty": 30 + } + ], + "span": 71, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 69 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 0, + "span": 70 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 8, + "name": ">::index" + } + }, + "symbol_name": "_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc84cc97dcb68f0ccE" + } + ] +} diff --git a/tests/integration/programs/modulo.rs b/tests/integration/programs/modulo.rs new file mode 100644 index 0000000..e76b3ef --- /dev/null +++ b/tests/integration/programs/modulo.rs @@ -0,0 +1,3 @@ +fn main() { + assert!(42 % 10 == 2); +} \ No newline at end of file diff --git a/tests/integration/programs/modulo.smir.json.expected b/tests/integration/programs/modulo.smir.json.expected new file mode 100644 index 0000000..7d300dd --- /dev/null +++ b/tests/integration/programs/modulo.smir.json.expected @@ -0,0 +1,2045 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 52, + 50, + 32, + 37, + 32, + 49, + 48, + 32, + 61, + 61, + 32, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h14e5f2504d96a2dfE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hab1f24d8faaecb52E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h979188c36192a753E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17he4c05346bd0dcef9E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8ff1e9a30552c38eE" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 29, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h63a8340ba339b238E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8ff1e9a30552c38eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h14e5f2504d96a2dfE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hee1b6f635523a8d7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h979188c36192a753E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17he4c05346bd0dcef9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h08d58f5924f7e805E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hab1f24d8faaecb52E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 2, + "projection": [] + } + }, + "expected": false, + "msg": { + "RemainderByZero": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 50, + "user_ty": null + } + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 255, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 5, + "projection": [] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Rem", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + } + ] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "BinaryOp": [ + "Rem", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 2, + 3 + ] + ], + "otherwise": 4 + } + } + }, + "span": 53 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 55, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 55 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 56, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 28 + } + ], + "span": 57, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN6modulo4main17h4106dafab6d6f113E" + } + ] +} diff --git a/tests/integration/programs/mutual_recursion.rs b/tests/integration/programs/mutual_recursion.rs new file mode 100644 index 0000000..7037bc8 --- /dev/null +++ b/tests/integration/programs/mutual_recursion.rs @@ -0,0 +1,21 @@ +fn is_even(n:u32) -> bool { + if n == 0 { + true + } else { + is_odd(n - 1) + } +} + +fn is_odd(n:u32) -> bool { + if n == 0 { + false + } else { + is_even(n - 1) + } +} + +fn main() { + let ans = is_even(10); + + assert!(ans == true); +} \ No newline at end of file diff --git a/tests/integration/programs/mutual_recursion.smir.json.expected b/tests/integration/programs/mutual_recursion.smir.json.expected new file mode 100644 index 0000000..29c46dc --- /dev/null +++ b/tests/integration/programs/mutual_recursion.smir.json.expected @@ -0,0 +1,2309 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 110, + 115, + 32, + 61, + 61, + 32, + 116, + 114, + 117, + 101 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hcd52964f2ca312ddE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h53659d65e7692e7aE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hb5b0fba1c2de5389E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h5c122f1a07159b22E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hdccbb66fb8dca376E" + } + ], + [ + 27, + { + "NormalSym": "_ZN16mutual_recursion6is_odd17h9569a7b059bb3702E" + } + ], + [ + 29, + { + "NormalSym": "_ZN16mutual_recursion7is_even17h4e35e0a16b0f3490E" + } + ], + [ + 30, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 33, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 73, + "user_ty": null + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 72, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 74 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 75 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 76 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 31 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 15, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 77, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 77 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 78, + "ty": 1 + }, + { + "mutability": "Not", + "span": 79, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 77, + "ty": 32 + } + ], + "span": 80, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "ans", + "source_info": { + "scope": 1, + "span": 79 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 8, + "name": "main" + } + }, + "symbol_name": "_ZN16mutual_recursion4main17h38e5604d644a3007E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 61 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 63, + "user_ty": null + } + } + } + ] + }, + "span": 63 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 62 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 64, + "user_ty": null + } + } + ] + } + ] + }, + "span": 65 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 64, + "user_ty": null + } + } + ] + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 65 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 66, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 67 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 68 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 69, + "ty": 25 + }, + { + "mutability": "Not", + "span": 70, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 65, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 65, + "ty": 28 + } + ], + "span": 71, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "n", + "source_info": { + "scope": 0, + "span": 70 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "is_odd" + } + }, + "symbol_name": "_ZN16mutual_recursion6is_odd17h9569a7b059bb3702E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 50 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 1 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 52, + "user_ty": null + } + } + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 53, + "user_ty": null + } + } + ] + } + ] + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 53, + "user_ty": null + } + } + ] + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 55, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 57 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 58, + "ty": 25 + }, + { + "mutability": "Not", + "span": 59, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 28 + } + ], + "span": 60, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "n", + "source_info": { + "scope": 0, + "span": 59 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "is_even" + } + }, + "symbol_name": "_ZN16mutual_recursion7is_even17h4e35e0a16b0f3490E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h1e192d77d7da5a04E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hdccbb66fb8dca376E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hcd52964f2ca312ddE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hbb5da079540ef856E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h5c122f1a07159b22E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hb5b0fba1c2de5389E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h9d4256942c1a76d1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h53659d65e7692e7aE" + } + ] +} diff --git a/tests/integration/programs/option-construction.rs b/tests/integration/programs/option-construction.rs new file mode 100644 index 0000000..e2b9b98 --- /dev/null +++ b/tests/integration/programs/option-construction.rs @@ -0,0 +1,6 @@ +#![allow(unused)] +fn main() { + let a:Option = Some(42); + let b:Option = None; + let c:u32 = a.unwrap(); +} \ No newline at end of file diff --git a/tests/integration/programs/option-construction.smir.json.expected b/tests/integration/programs/option-construction.smir.json.expected new file mode 100644 index 0000000..cc900e0 --- /dev/null +++ b/tests/integration/programs/option-construction.smir.json.expected @@ -0,0 +1,1838 @@ +{ + "allocs": [], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h925669b3e5c1558cE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h655b9b1e12bd730dE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h3f1b6c09e806e312E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h55e32bb642146e02E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h3c05dfd176f9f27fE" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core6option13unwrap_failed17h6055e3ba7a15ec00E" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core6option15Option$LT$T$GT$6unwrap17h1eccd13f6e05cb6fE" + } + ], + [ + 30, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 8, + 1, + [ + { + "Type": 26 + } + ], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 62, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 63 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 8, + 0, + [ + { + "Type": 26 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 64 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 60, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 61 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 65 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 66, + "ty": 1 + }, + { + "mutability": "Not", + "span": 67, + "ty": 27 + }, + { + "mutability": "Not", + "span": 68, + "ty": 27 + }, + { + "mutability": "Not", + "span": 69, + "ty": 26 + } + ], + "span": 70, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 67 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 68 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "c", + "source_info": { + "scope": 3, + "span": 69 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "main" + } + }, + "symbol_name": "_ZN19option_construction4main17h8a12528da185363eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17he6c404e6b502f630E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h3c05dfd176f9f27fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h925669b3e5c1558cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hcc1e21bb8a7447c4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h3f1b6c09e806e312E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h55e32bb642146e02E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h322982812c073270E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Discriminant": { + "local": 1, + "projection": [] + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 45 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 46 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 47, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 48 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 1, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 50 + } + ], + "terminator": { + "kind": "Return", + "span": 49 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 51, + "ty": 26 + }, + { + "mutability": "Not", + "span": 52, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 53, + "ty": 6 + }, + { + "mutability": "Mut", + "span": 48, + "ty": 28 + } + ], + "span": 54, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 52 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "val", + "source_info": { + "scope": 1, + "span": 50 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 5, + "name": "std::option::Option::::unwrap" + } + }, + "symbol_name": "_ZN4core6option15Option$LT$T$GT$6unwrap17h1eccd13f6e05cb6fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 56, + "user_ty": null + } + } + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": "Return", + "span": 55 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 57, + "ty": 17 + }, + { + "mutability": "Not", + "span": 58, + "ty": 1 + } + ], + "span": 59, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 58 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 6, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h655b9b1e12bd730dE" + } + ] +} diff --git a/tests/integration/programs/primitive-type-bounds.rs b/tests/integration/programs/primitive-type-bounds.rs new file mode 100644 index 0000000..036fb2f --- /dev/null +++ b/tests/integration/programs/primitive-type-bounds.rs @@ -0,0 +1,5 @@ +fn main () { + let a:u32 = 4294967295; + let b:u32 = 4294967294 + 1; + assert!(a == b) +} \ No newline at end of file diff --git a/tests/integration/programs/primitive-type-bounds.smir.json.expected b/tests/integration/programs/primitive-type-bounds.smir.json.expected new file mode 100644 index 0000000..2209f0a --- /dev/null +++ b/tests/integration/programs/primitive-type-bounds.smir.json.expected @@ -0,0 +1,1910 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 61, + 61, + 32, + 98 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hef6c7380c3f06920E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hab588e4fe985e26cE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hc3299a837d16d788E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17he67bf42a55cc3df7E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h35ee03377e0bbb80E" + } + ], + [ + 27, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 31, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 254, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 254, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 51, + "user_ty": null + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 255, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 54, + "user_ty": null + } + } + } + ] + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 53 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 53 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 57, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 57 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 58, + "ty": 1 + }, + { + "mutability": "Not", + "span": 59, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 53, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 30 + } + ], + "span": 61, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 60 + }, + "value": { + "Const": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 255, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 54, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 59 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN21primitive_type_bounds4main17h5c3af069c6dca662E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hd0873d35280532adE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h35ee03377e0bbb80E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hef6c7380c3f06920E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h65e7b8ea1d58c373E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hc3299a837d16d788E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17he67bf42a55cc3df7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17ha011e9e2b70943a3E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hab588e4fe985e26cE" + } + ] +} diff --git a/tests/integration/programs/recursion-simple-match.rs b/tests/integration/programs/recursion-simple-match.rs new file mode 100644 index 0000000..96b4086 --- /dev/null +++ b/tests/integration/programs/recursion-simple-match.rs @@ -0,0 +1,12 @@ +fn sum_to_n_rec(n:u32) -> u32 { + match n { + 0 => 0, + _ => n + sum_to_n_rec(n - 1), + } +} + +fn main() { + let ans = sum_to_n_rec(10); + + assert!(ans == 55); +} \ No newline at end of file diff --git a/tests/integration/programs/recursion-simple-match.smir.json.expected b/tests/integration/programs/recursion-simple-match.smir.json.expected new file mode 100644 index 0000000..2567052 --- /dev/null +++ b/tests/integration/programs/recursion-simple-match.smir.json.expected @@ -0,0 +1,2115 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 110, + 115, + 32, + 61, + 61, + 32, + 53, + 53 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17he5540e8be59dc4e9E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h1b26615e5477064aE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h96c25281eded21e5E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h5271de7d02e9edcaE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hc3cc7da138ab0f4eE" + } + ], + [ + 27, + { + "NormalSym": "_ZN22recursion_simple_match12sum_to_n_rec17h758e42f7af76951cE" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 32, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 50 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 51, + "user_ty": null + } + } + ] + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 53, + "user_ty": null + } + } + } + ] + }, + "span": 53 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 53 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 54, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 55 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 5, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 5, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 57 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 58 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 59, + "ty": 26 + }, + { + "mutability": "Not", + "span": 60, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 28 + } + ], + "span": 61, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "n", + "source_info": { + "scope": 0, + "span": 60 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "sum_to_n_rec" + } + }, + "symbol_name": "_ZN22recursion_simple_match12sum_to_n_rec17h758e42f7af76951cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 63, + "user_ty": null + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 62, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 64 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 55, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 65 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 66 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 67, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 67 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 68, + "ty": 1 + }, + { + "mutability": "Not", + "span": 69, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 67, + "ty": 31 + } + ], + "span": 70, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "ans", + "source_info": { + "scope": 1, + "span": 69 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "main" + } + }, + "symbol_name": "_ZN22recursion_simple_match4main17hcc84aa0b3c910002E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h6027155185799025E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hc3cc7da138ab0f4eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17he5540e8be59dc4e9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h10fad7ae9de5e934E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h5271de7d02e9edcaE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h96c25281eded21e5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17ha54d3e04cb1513d1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h1b26615e5477064aE" + } + ] +} diff --git a/tests/integration/programs/recursion-simple.rs b/tests/integration/programs/recursion-simple.rs new file mode 100644 index 0000000..e15793f --- /dev/null +++ b/tests/integration/programs/recursion-simple.rs @@ -0,0 +1,13 @@ +fn sum_to_n_rec(n:u32) -> u32 { + if n == 0 { + 0 + } else { + n + sum_to_n_rec(n - 1) + } +} + +fn main() { + let ans = sum_to_n_rec(10); + + assert!(ans == 55); +} \ No newline at end of file diff --git a/tests/integration/programs/recursion-simple.smir.json.expected b/tests/integration/programs/recursion-simple.smir.json.expected new file mode 100644 index 0000000..ed438f4 --- /dev/null +++ b/tests/integration/programs/recursion-simple.smir.json.expected @@ -0,0 +1,2115 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 110, + 115, + 32, + 61, + 61, + 32, + 53, + 53 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hc9ab170b11232827E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h655bbf5ad37d7866E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h47cc69539d774688E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h2500d7ea93f58c70E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he2c9997af6ea1a36E" + } + ], + [ + 27, + { + "NormalSym": "_ZN16recursion_simple12sum_to_n_rec17h3cbe6d03a5ef69a5E" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 32, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 50 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 52, + "user_ty": null + } + } + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 53, + "user_ty": null + } + } + ] + } + ] + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 1, + 26 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 53, + "user_ty": null + } + } + ] + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 4, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 55, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 5, + "projection": [ + { + "Field": [ + 1, + 26 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 57 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 5, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 58 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 59, + "ty": 25 + }, + { + "mutability": "Not", + "span": 60, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 28 + } + ], + "span": 61, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "n", + "source_info": { + "scope": 0, + "span": 60 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "sum_to_n_rec" + } + }, + "symbol_name": "_ZN16recursion_simple12sum_to_n_rec17h3cbe6d03a5ef69a5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 10, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 63, + "user_ty": null + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 62, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 64 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 55, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 65 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 66 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 67, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 67 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 68, + "ty": 1 + }, + { + "mutability": "Not", + "span": 69, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 67, + "ty": 31 + } + ], + "span": 70, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "ans", + "source_info": { + "scope": 1, + "span": 69 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "main" + } + }, + "symbol_name": "_ZN16recursion_simple4main17hea083389f2add465E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h6f3b8935440502e9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17he2c9997af6ea1a36E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hc9ab170b11232827E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17ha99303762f727ffbE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h2500d7ea93f58c70E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h47cc69539d774688E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h5cd86cd7d05abed4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h655bbf5ad37d7866E" + } + ] +} diff --git a/tests/integration/programs/ref-deref.rs b/tests/integration/programs/ref-deref.rs new file mode 100644 index 0000000..d637a6c --- /dev/null +++ b/tests/integration/programs/ref-deref.rs @@ -0,0 +1,7 @@ +fn main() { + let a = 42; + let b = &a; + let c = *b; + + assert!(c == 42); +} \ No newline at end of file diff --git a/tests/integration/programs/ref-deref.smir.json.expected b/tests/integration/programs/ref-deref.smir.json.expected new file mode 100644 index 0000000..969a9c3 --- /dev/null +++ b/tests/integration/programs/ref-deref.smir.json.expected @@ -0,0 +1,1744 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 99, + 32, + 61, + 61, + 32, + 52, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h2209da0d85019512E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h4f9c77724b045647E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h29c17b0395cce9dfE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h8b71e772c69320b4E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h24aba19602c3173dE" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 29, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hff3c45a4441fa21cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h24aba19602c3173dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h2209da0d85019512E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h354c1eede3be2001E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h29c17b0395cce9dfE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h8b71e772c69320b4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h81f3fb8d0c7e4abeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h4f9c77724b045647E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + } + ] + }, + "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 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 42, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 50 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 55, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 55 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 56, + "ty": 1 + }, + { + "mutability": "Not", + "span": 57, + "ty": 16 + }, + { + "mutability": "Not", + "span": 58, + "ty": 27 + }, + { + "mutability": "Not", + "span": 59, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 28 + } + ], + "span": 60, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 57 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 58 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "c", + "source_info": { + "scope": 3, + "span": 59 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN9ref_deref4main17hd5e9aa3e9b096520E" + } + ] +} diff --git a/tests/integration/programs/shl_min.rs b/tests/integration/programs/shl_min.rs new file mode 100644 index 0000000..d33c271 --- /dev/null +++ b/tests/integration/programs/shl_min.rs @@ -0,0 +1,7 @@ +fn main() { + assert!(-128_i8 << 1 == 0); + assert!(-32768_i16 << 1 == 0); + assert!(-2147483648_i32 << 1 == 0); + assert!(-9223372036854775808_i64 << 1 == 0); + assert!(-170141183460469231731687303715884105728_i128 << 1 == 0); +} \ No newline at end of file diff --git a/tests/integration/programs/shl_min.smir.json.expected b/tests/integration/programs/shl_min.smir.json.expected new file mode 100644 index 0000000..9c7a27e --- /dev/null +++ b/tests/integration/programs/shl_min.smir.json.expected @@ -0,0 +1,3528 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 45, + 49, + 50, + 56, + 95, + 105, + 56, + 32, + 60, + 60, + 32, + 49, + 32, + 61, + 61, + 32, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 45, + 51, + 50, + 55, + 54, + 56, + 95, + 105, + 49, + 54, + 32, + 60, + 60, + 32, + 49, + 32, + 61, + 61, + 32, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 45, + 50, + 49, + 52, + 55, + 52, + 56, + 51, + 54, + 52, + 56, + 95, + 105, + 51, + 50, + 32, + 60, + 60, + 32, + 49, + 32, + 61, + 61, + 32, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 45, + 57, + 50, + 50, + 51, + 51, + 55, + 50, + 48, + 51, + 54, + 56, + 53, + 52, + 55, + 55, + 53, + 56, + 48, + 56, + 95, + 105, + 54, + 52, + 32, + 60, + 60, + 32, + 49, + 32, + 61, + 61, + 32, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 4, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 45, + 49, + 55, + 48, + 49, + 52, + 49, + 49, + 56, + 51, + 52, + 54, + 48, + 52, + 54, + 57, + 50, + 51, + 49, + 55, + 51, + 49, + 54, + 56, + 55, + 51, + 48, + 51, + 55, + 49, + 53, + 56, + 56, + 52, + 49, + 48, + 53, + 55, + 50, + 56, + 95, + 105, + 49, + 50, + 56, + 32, + 60, + 60, + 32, + 49, + 32, + 61, + 61, + 32, + 48 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h380b4a51a57f858cE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hc22d5c4d8d5eda4dE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h5565a84b2bcc8422E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h97a7ff3f152f48d5E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h1d02efcb48d20e88E" + } + ], + [ + 27, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 33, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h2f8fa9f18a134a32E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h1d02efcb48d20e88E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h380b4a51a57f858cE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h10dddd6d4fdde398E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h5565a84b2bcc8422E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h97a7ff3f152f48d5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3bd2945761e325daE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hc22d5c4d8d5eda4dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + }, + 25 + ] + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 8, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 52, + "user_ty": null + } + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 3, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shl", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 2 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "BinaryOp": [ + "Shl", + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 2 + }, + "span": 50, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 53 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 55, + "user_ty": null + } + }, + 25 + ] + } + ] + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 16, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 56, + "user_ty": null + } + } + ] + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 7, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shl", + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 2, + "bytes": [ + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 54, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 55, + "user_ty": null + } + } + ] + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 35, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 57, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 57 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "Shl", + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 2, + "bytes": [ + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 54, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 55, + "user_ty": null + } + } + ] + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 6 + } + } + }, + "span": 58 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 60, + "user_ty": null + } + }, + 25 + ] + } + ] + }, + "span": 61 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 32, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 61, + "user_ty": null + } + } + ] + } + ] + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 11, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shl", + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 59, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 60, + "user_ty": null + } + } + ] + }, + "target": 7, + "unwind": "Continue" + } + }, + "span": 61 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 38, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 62, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 62 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "BinaryOp": [ + "Shl", + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 59, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 60, + "user_ty": null + } + } + ] + } + ] + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ] + ], + "otherwise": 9 + } + } + }, + "span": 63 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 65, + "user_ty": null + } + }, + 25 + ] + } + ] + }, + "span": 66 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 64, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 66, + "user_ty": null + } + } + ] + } + ] + }, + "span": 66 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 15, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shl", + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 29 + }, + "span": 64, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 65, + "user_ty": null + } + } + ] + }, + "target": 10, + "unwind": "Continue" + } + }, + "span": 66 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 43, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 67, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 67 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Shl", + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 29 + }, + "span": 64, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 65, + "user_ty": null + } + } + ] + } + ] + }, + "span": 66 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 13, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 11 + ] + ], + "otherwise": 12 + } + } + }, + "span": 68 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 70, + "user_ty": null + } + }, + 25 + ] + } + ] + }, + "span": 71 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Move": { + "local": 18, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 128, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 71, + "user_ty": null + } + } + ] + } + ] + }, + "span": 71 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 19, + "projection": [] + } + }, + "expected": true, + "msg": { + "Overflow": [ + "Shl", + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 16, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 30 + }, + "span": 69, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 70, + "user_ty": null + } + } + ] + }, + "target": 13, + "unwind": "Continue" + } + }, + "span": 71 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 24, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 52, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 16, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 72, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 72 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "Shl", + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 16, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 30 + }, + "span": 69, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 70, + "user_ty": null + } + } + ] + } + ] + }, + "span": 71 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 17, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 14 + ] + ], + "otherwise": 15 + } + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 74 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 73, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 20, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 75, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 75 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 76, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 2 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 31 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 31 + }, + { + "mutability": "Mut", + "span": 62, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 61, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 61, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 61, + "ty": 31 + }, + { + "mutability": "Mut", + "span": 67, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 31 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 71, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 71, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 71, + "ty": 31 + }, + { + "mutability": "Mut", + "span": 75, + "ty": 32 + } + ], + "span": 77, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN7shl_min4main17ha09d7c732fcbfe55E" + } + ] +} diff --git a/tests/integration/programs/slice.rs b/tests/integration/programs/slice.rs new file mode 100644 index 0000000..bff6e82 --- /dev/null +++ b/tests/integration/programs/slice.rs @@ -0,0 +1,7 @@ +fn main() { + let a = [1, 2, 3, 4]; + + let b = &a[1..3]; + + assert!(b == [2, 3]); +} \ No newline at end of file diff --git a/tests/integration/programs/slice.smir.json.expected b/tests/integration/programs/slice.smir.json.expected new file mode 100644 index 0000000..5d18f8e --- /dev/null +++ b/tests/integration/programs/slice.smir.json.expected @@ -0,0 +1,4418 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0, + 3, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 98, + 32, + 61, + 61, + 32, + 91, + 50, + 44, + 32, + 51, + 93 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 1, + { + "NormalSym": "_ZN4core5slice5index24slice_end_index_len_fail17h137110c15301da79E" + } + ], + [ + 4, + { + "NormalSym": "_ZN4core5slice5index22slice_index_order_fail17hff5113e5cc04c9f9E" + } + ], + [ + 11, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 24, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h3c2d0d2dccd344b9E" + } + ], + [ + 25, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbea5f2636f8c0c63E" + } + ], + [ + 30, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h3eae969071474082E" + } + ], + [ + 31, + { + "IntrinsicSym": "black_box" + } + ], + [ + 32, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h311abd4b1c62697bE" + } + ], + [ + 34, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hcc1384a9a6ecebd6E" + } + ], + [ + 36, + { + "NormalSym": "_ZN4core5slice5index74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17hf3bc4d3662561217E" + } + ], + [ + 38, + { + "NormalSym": "_ZN69_$LT$T$u20$as$u20$core..array..equality..SpecArrayEq$LT$U$C$_$GT$$GT$7spec_eq17haaa877014424f7ceE" + } + ], + [ + 43, + { + "NormalSym": "_ZN4core5array8equality92_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u3b$$u20$N$u5d$$GT$$u20$for$u20$$u5b$T$u5d$$GT$2eq17h5f2ede35930746bbE" + } + ], + [ + 45, + { + "NormalSym": "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5a835d09b00d32a5E" + } + ], + [ + 46, + { + "IntrinsicSym": "raw_eq" + } + ], + [ + 47, + { + "NormalSym": "_ZN4core5array85_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$5index17h898083967c05e5c7E" + } + ], + [ + 48, + { + "NormalSym": "_ZN4core5array8equality96_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u3b$$u20$N$u5d$$GT$$u20$for$u20$$RF$$u5b$T$u5d$$GT$2eq17h20bda229d8d515edE" + } + ], + [ + 49, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 53, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 0 + ] + } + ] + } + } + } + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 0 + ] + } + ] + } + } + } + ] + }, + "span": 3 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 0 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Copy": { + "local": 7, + "projection": [] + } + } + ] + } + ] + }, + "span": 0 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 13, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 0 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 4, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 5 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 8 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 2, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 8 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 9 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 10 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 2 + ] + } + ] + }, + "span": 11 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "Offset", + { + "Copy": { + "local": 16, + "projection": [] + } + }, + { + "Copy": { + "local": 7, + "projection": [] + } + } + ] + } + ] + }, + "span": 12 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 10 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 3, + "Not" + ] + }, + [ + { + "Copy": { + "local": 15, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 13 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 9 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 14 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 11, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 15 + } + ], + "terminator": { + "kind": "Return", + "span": 6 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 18 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 4 + }, + "span": 16, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 14 + }, + "span": 21 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "BinaryOp": [ + "SubUnchecked", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Copy": { + "local": 7, + "projection": [] + } + } + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 1, + 1, + [ + { + "Type": 0 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 14, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 24 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 0 + ] + } + ] + } + } + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 19 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 20 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 26 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "BinaryOp": [ + "Gt", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Copy": { + "local": 9, + "projection": [] + } + } + ] + } + ] + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 8, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 20 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 27, + "ty": 5 + }, + { + "mutability": "Not", + "span": 28, + "ty": 6 + }, + { + "mutability": "Not", + "span": 29, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 30, + "ty": 7 + }, + { + "mutability": "Not", + "span": 25, + "ty": 0 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 8 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 0 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 0 + }, + { + "mutability": "Mut", + "span": 20, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 26, + "ty": 0 + }, + { + "mutability": "Not", + "span": 5, + "ty": 7 + }, + { + "mutability": "Not", + "span": 9, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 8, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 0, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 21, + "ty": 0 + }, + { + "mutability": "Not", + "span": 31, + "ty": 2 + }, + { + "mutability": "Not", + "span": 32, + "ty": 2 + } + ], + "span": 40, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 28 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 0, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "new_len", + "source_info": { + "scope": 1, + "span": 25 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 33 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 2, + "span": 34 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 35 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "offset", + "source_info": { + "scope": 3, + "span": 36 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "len", + "source_info": { + "scope": 3, + "span": 37 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 31 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 5, + "span": 38 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 5, + "span": 39 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 6, + "span": 32 + }, + "value": { + "Place": { + "local": 16, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": " as std::slice::SliceIndex<[i32]>>::index" + } + }, + "symbol_name": "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5a835d09b00d32a5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 42 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 43 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 43 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 44 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 3, + [ + { + "Type": 12 + }, + { + "Type": 13 + }, + { + "Type": 14 + }, + { + "Type": 15 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 44 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 43 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 43 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 45 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 11 + }, + "span": 41, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 42 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 47 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 17 + ] + } + ] + } + } + } + ] + }, + "span": 48 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 49 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 49 + } + ], + "terminator": { + "kind": "Return", + "span": 46 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 50, + "ty": 17 + }, + { + "mutability": "Not", + "span": 51, + "ty": 18 + }, + { + "mutability": "Not", + "span": 52, + "ty": 17 + }, + { + "mutability": "Not", + "span": 53, + "ty": 19 + }, + { + "mutability": "Not", + "span": 54, + "ty": 20 + }, + { + "mutability": "Mut", + "span": 42, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 44, + "ty": 23 + } + ], + "span": 55, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 51 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 52 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 53 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 54 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 48 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 2, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h77bea8e7c7fcc35bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 58 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 57 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 18 + ] + } + ] + } + } + } + ] + }, + "span": 59 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 24 + }, + "span": 56, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 57 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 60, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 58 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 63 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 64 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + ] + } + ] + }, + "span": 64 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 65 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 26 + ] + }, + { + "Field": [ + 0, + 20 + ] + } + ] + } + } + } + ] + }, + "span": 65 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 66 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 67 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 68 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 45 + } + ], + "terminator": { + "kind": "Return", + "span": 62 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 69, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 44, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 58, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 12 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 64, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 65, + "ty": 20 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 51 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 18 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 70 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 71 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 3, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hcc1384a9a6ecebd6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 12 + }, + "span": 73, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 72, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 74 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 12 + }, + "span": 73, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 75, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 76 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 77 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 78, + "ty": 12 + }, + { + "mutability": "Not", + "span": 79, + "ty": 18 + }, + { + "mutability": "Not", + "span": 80, + "ty": 12 + } + ], + "span": 83, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 79 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 81 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 82 + }, + "value": { + "Const": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 12 + }, + "span": 73, + "user_ty": null + } + } + } + ] + } + ], + "id": 4, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h3c2d0d2dccd344b9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 84, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 84 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 84 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 84, + "ty": 27 + }, + { + "mutability": "Not", + "span": 84, + "ty": 33 + }, + { + "mutability": "Not", + "span": 84, + "ty": 12 + } + ], + "span": 84, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hb5e2594a7379e80eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 84 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 34 + }, + "span": 84, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 84 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 84 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 84 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 84 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 84 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 84, + "ty": 27 + }, + { + "mutability": "Not", + "span": 84, + "ty": 23 + }, + { + "mutability": "Not", + "span": 84, + "ty": 12 + }, + { + "mutability": "Not", + "span": 84, + "ty": 35 + } + ], + "span": 84, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h311abd4b1c62697bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 84 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 84 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 84, + "ty": 12 + }, + { + "mutability": "Not", + "span": 84, + "ty": 18 + }, + { + "mutability": "Not", + "span": 84, + "ty": 12 + } + ], + "span": 84, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h3eae969071474082E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 85 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 85, + "ty": 12 + }, + { + "mutability": "Not", + "span": 85, + "ty": 33 + } + ], + "span": 85, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hfc048dbcd70f305eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 88 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 36 + }, + "span": 86, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 87 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 89 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 90, + "ty": 5 + }, + { + "mutability": "Not", + "span": 91, + "ty": 37 + }, + { + "mutability": "Not", + "span": 92, + "ty": 6 + }, + { + "mutability": "Not", + "span": 93, + "ty": 5 + } + ], + "span": 94, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 91 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 92 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "std::array::> for [i32; 4]>::index" + } + }, + "symbol_name": "_ZN4core5array85_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$5index17h898083967c05e5c7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 96 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 97 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 97 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 95 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 98 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 98 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 0 + }, + "span": 99, + "user_ty": null + } + } + ] + } + ] + }, + "span": 95 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 95 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 101 + } + ], + "terminator": { + "kind": "Return", + "span": 100 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 99 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 104 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 9, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 105 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 106 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 106 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 9, + 0, + [ + { + "Type": 40 + }, + { + "Type": 41 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 107 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 108 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 109 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 97 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 97 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 40 + ] + } + ] + } + } + } + ] + }, + "span": 110 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 38 + }, + "span": 102, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 103 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 99 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 42 + }, + "span": 73, + "user_ty": null + } + } + } + ] + }, + "span": 112 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 109 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 97 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 97 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 9 + }, + "span": 111, + "user_ty": null + } + } + } + ] + }, + "span": 111 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 1 + } + }, + "span": 111 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 113, + "ty": 9 + }, + { + "mutability": "Not", + "span": 114, + "ty": 5 + }, + { + "mutability": "Not", + "span": 115, + "ty": 40 + }, + { + "mutability": "Not", + "span": 96, + "ty": 42 + }, + { + "mutability": "Not", + "span": 110, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 95, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 98, + "ty": 0 + }, + { + "mutability": "Not", + "span": 116, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 106, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 117, + "ty": 10 + } + ], + "span": 123, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 114 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 115 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 1, + "span": 96 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 110 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 118 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "slice", + "source_info": { + "scope": 4, + "span": 119 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 5, + "span": 116 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 120 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 121 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 7, + "span": 122 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 8, + "name": "std::array::equality:: for [i32]>::eq" + } + }, + "symbol_name": "_ZN4core5array8equality92_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u3b$$u20$N$u5d$$GT$$u20$for$u20$$u5b$T$u5d$$GT$2eq17h5f2ede35930746bbE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 125 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 15, + "kind": "ZeroSized", + "ty": 43 + }, + "span": 124, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 124 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 126 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 127, + "ty": 9 + }, + { + "mutability": "Not", + "span": 128, + "ty": 44 + }, + { + "mutability": "Not", + "span": 129, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 128, + "ty": 5 + } + ], + "span": 130, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 128 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 129 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 10, + "name": "std::array::equality:: for &[i32]>::eq" + } + }, + "symbol_name": "_ZN4core5array8equality96_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u3b$$u20$N$u5d$$GT$$u20$for$u20$$RF$$u5b$T$u5d$$GT$2eq17h20bda229d8d515edE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 1, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 16, + "kind": "ZeroSized", + "ty": 45 + }, + "span": 131, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 132 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 133 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 134, + "ty": 5 + }, + { + "mutability": "Not", + "span": 135, + "ty": 5 + }, + { + "mutability": "Not", + "span": 136, + "ty": 6 + } + ], + "span": 137, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 135 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 0, + "span": 136 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 11, + "name": "core::slice::index::> for [i32]>::index" + } + }, + "symbol_name": "_ZN4core5slice5index74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17hf3bc4d3662561217E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 139, + "user_ty": null + } + } + } + ] + }, + "span": 139 + } + ], + "terminator": { + "kind": "Return", + "span": 138 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 140, + "ty": 28 + }, + { + "mutability": "Not", + "span": 141, + "ty": 12 + } + ], + "span": 142, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 141 + }, + "value": { + "Const": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 12 + }, + "span": 73, + "user_ty": null + } + } + } + ] + } + ], + "id": 12, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbea5f2636f8c0c63E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Array": 27 + }, + [ + { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 27 + }, + "span": 153, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 27 + }, + "span": 154, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 27 + }, + "span": 155, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 4, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 27 + }, + "span": 156, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 157 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 158 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 15, + 0, + [ + { + "Type": 0 + } + ], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 24, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 0 + }, + "span": 159, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 0 + }, + "span": 160, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 161 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 19, + "kind": "ZeroSized", + "ty": 47 + }, + "span": 152, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 152 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 163 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 164 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 40 + }, + "span": 165, + "user_ty": null + } + } + } + ] + }, + "span": 165 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 8, + "projection": [] + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 26, + "kind": "ZeroSized", + "ty": 48 + }, + "span": 162, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 162 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 162 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 166 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 29, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 50 + }, + "span": 73, + "user_ty": null + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 28, + "kind": "ZeroSized", + "ty": 49 + }, + "span": 167, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 167 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 168, + "ty": 12 + }, + { + "mutability": "Not", + "span": 169, + "ty": 51 + }, + { + "mutability": "Not", + "span": 170, + "ty": 5 + }, + { + "mutability": "Not", + "span": 152, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 158, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 161, + "ty": 6 + }, + { + "mutability": "Mut", + "span": 162, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 164, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 165, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 167, + "ty": 7 + } + ], + "span": 171, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 169 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 170 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Array": 27 + }, + [ + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 27 + }, + "span": 172, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 3, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 27 + }, + "span": 173, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 165 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 165 + } + ], + "terminator": { + "kind": "Return", + "span": 165 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 165, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 165, + "ty": 52 + } + ], + "span": 165, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 14, + "name": "main" + } + }, + "symbol_name": "_ZN5slice4main17h982023fdd0e6b27fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 145 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 40 + ] + } + ] + }, + "span": 145 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 18, + "kind": "ZeroSized", + "ty": 46 + }, + "span": 143, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 144 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 147 + } + ], + "terminator": { + "kind": "Return", + "span": 146 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 148, + "ty": 9 + }, + { + "mutability": "Not", + "span": 149, + "ty": 40 + }, + { + "mutability": "Not", + "span": 150, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 145, + "ty": 40 + } + ], + "span": 151, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "a", + "source_info": { + "scope": 0, + "span": 149 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "b", + "source_info": { + "scope": 0, + "span": 150 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 13, + "name": ">::spec_eq" + } + }, + "symbol_name": "_ZN69_$LT$T$u20$as$u20$core..array..equality..SpecArrayEq$LT$U$C$_$GT$$GT$7spec_eq17haaa877014424f7ceE" + } + ] +} diff --git a/tests/integration/programs/std-string-empty.rs b/tests/integration/programs/std-string-empty.rs new file mode 100644 index 0000000..be025d6 --- /dev/null +++ b/tests/integration/programs/std-string-empty.rs @@ -0,0 +1,4 @@ +fn main() { + let a:String = String::new(); + assert!(a == ""); +} \ No newline at end of file diff --git a/tests/integration/programs/std-string-empty.smir.json.expected b/tests/integration/programs/std-string-empty.smir.json.expected new file mode 100644 index 0000000..1e72ffd --- /dev/null +++ b/tests/integration/programs/std-string-empty.smir.json.expected @@ -0,0 +1,10380 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "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, + 115, + 105, + 122, + 101, + 58, + 58, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 95, + 109, + 117, + 108, + 32, + 99, + 97, + 110, + 110, + 111, + 116, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 1, + "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, + 115, + 108, + 105, + 99, + 101, + 58, + 58, + 102, + 114, + 111, + 109, + 95, + 114, + 97, + 119, + 95, + 112, + 97, + 114, + 116, + 115, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 116, + 111, + 32, + 98, + 101, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108, + 44, + 32, + 97, + 110, + 100, + 32, + 116, + 104, + 101, + 32, + 116, + 111, + 116, + 97, + 108, + 32, + 115, + 105, + 122, + 101, + 32, + 111, + 102, + 32, + 116, + 104, + 101, + 32, + 115, + 108, + 105, + 99, + 101, + 32, + 110, + 111, + 116, + 32, + 116, + 111, + 32, + 101, + 120, + 99, + 101, + 101, + 100, + 32, + 96, + 105, + 115, + 105, + 122, + 101, + 58, + 58, + 77, + 65, + 88, + 96 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 13 + ] + ] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 8, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 4, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 14 + ] + ] + } + } + } + ], + [ + 5, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 12 + ] + ] + } + } + } + ], + [ + 6, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 61, + 61, + 32, + 34, + 34 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 7, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 12, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 13, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 14, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h8a4d857081dbfaf6E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbf94cbfcda9701e6E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17heba02fa12c9fe2d9E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 23, + { + "NormalSym": "_ZN4core9panicking14panic_nounwind17hee6445121510e179E" + } + ], + [ + 28, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17he70aeb4246727f24E" + } + ], + [ + 30, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h1929e2e8e9434881E" + } + ], + [ + 34, + { + "NormalSym": "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha7e6a1ccddf30af0E" + } + ], + [ + 38, + { + "NormalSym": "_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdec771535c18b312E" + } + ], + [ + 43, + { + "IntrinsicSym": "ctpop" + } + ], + [ + 44, + { + "NormalSym": "_ZN4core9panicking9panic_fmt17h8510a50a874ddcc2E" + } + ], + [ + 57, + { + "NormalSym": "_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_mul18precondition_check17hbe9fc50f0b01d61dE" + } + ], + [ + 65, + { + "NormalSym": "__rust_dealloc" + } + ], + [ + 70, + { + "NoOpSym": "" + } + ], + [ + 73, + { + "IntrinsicSym": "size_of_val" + } + ], + [ + 74, + { + "IntrinsicSym": "compare_bytes" + } + ], + [ + 77, + { + "NormalSym": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h36f247bc9566572eE" + } + ], + [ + 78, + { + "NormalSym": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h04db9e7ed4d0984aE" + } + ], + [ + 79, + { + "NormalSym": "_ZN4core5slice3raw14from_raw_parts18precondition_check17hd731fe266d532e13E" + } + ], + [ + 80, + { + "NormalSym": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h48a560245506d1e3E" + } + ], + [ + 86, + { + "NormalSym": "_ZN5alloc6string6String3new17h10f73349ad3baa53E" + } + ], + [ + 87, + { + "NormalSym": "_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h563fb1f7b684b2a7E" + } + ], + [ + 88, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 89, + { + "NormalSym": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h63cbb232c447c463E" + } + ], + [ + 90, + { + "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha4e7fc423a077132E" + } + ], + [ + 91, + { + "NoOpSym": "" + } + ], + [ + 92, + { + "NormalSym": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h0beb4ebee2e07298E" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 40, + "kind": "ZeroSized", + "ty": 86 + }, + "span": 349, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 350 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 352 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 42, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 5 + ] + ] + } + } + }, + "ty": 82 + }, + "span": 353, + "user_ty": null + } + } + } + ] + }, + "span": 353 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 351, + "user_ty": null + } + }, + "target": 2, + "unwind": { + "Cleanup": 6 + } + } + }, + "span": 351 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 351 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 354 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 44, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 6 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 43, + "kind": "ZeroSized", + "ty": 88 + }, + "span": 355, + "user_ty": null + } + }, + "target": null, + "unwind": { + "Cleanup": 6 + } + } + }, + "span": 355 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 356 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 7, + "unwind": "Terminate" + } + }, + "span": 354 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 357 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 358, + "ty": 1 + }, + { + "mutability": "Not", + "span": 359, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 351, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 352, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 353, + "ty": 82 + }, + { + "mutability": "Mut", + "span": 355, + "ty": 26 + } + ], + "span": 357, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 359 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 45, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 353, + "user_ty": null + } + } + } + ] + }, + "span": 353 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 353 + } + ], + "terminator": { + "kind": "Return", + "span": 353 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 353, + "ty": 82 + }, + { + "mutability": "Mut", + "span": 353, + "ty": 24 + } + ], + "span": 353, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 22, + "name": "main" + } + }, + "symbol_name": "_ZN16std_string_empty4main17hd07ef96c1ecf9236E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h9123a60f5321d3daE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h1929e2e8e9434881E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h8a4d857081dbfaf6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [], + "id": 3, + "name": "std::intrinsics::size_of_val::<[u8]>" + } + }, + "symbol_name": "_ZN4core10intrinsics11size_of_val17hb66943408c33bf76E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 44 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 45 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 46 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 21 + ] + } + ] + }, + "span": 46 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 47 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 21 + ] + } + ] + }, + "span": 47 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + } + ] + }, + "span": 45 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 48 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 48 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 0, + 21 + ] + } + ] + } + } + } + ] + }, + "span": 49 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 1, + 22 + ] + } + ] + } + } + } + ] + }, + "span": 50 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 51 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 44 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 7, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 69, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 53, + "user_ty": null + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 52, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 55 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 56, + "ty": 1 + }, + { + "mutability": "Not", + "span": 57, + "ty": 25 + }, + { + "mutability": "Not", + "span": 57, + "ty": 25 + }, + { + "mutability": "Not", + "span": 54, + "ty": 26 + }, + { + "mutability": "Not", + "span": 49, + "ty": 21 + }, + { + "mutability": "Not", + "span": 50, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 45, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 46, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 47, + "ty": 21 + } + ], + "span": 60, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "lhs", + "source_info": { + "scope": 0, + "span": 57 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 0, + "span": 57 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 58 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 1, + "span": 59 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 2, + "span": 49 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 50 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 4, + "name": "core::num::::unchecked_mul::precondition_check" + } + }, + "symbol_name": "_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_mul18precondition_check17hbe9fc50f0b01d61dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 61, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 61 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 61 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 61, + "ty": 16 + }, + { + "mutability": "Not", + "span": 61, + "ty": 29 + }, + { + "mutability": "Not", + "span": 61, + "ty": 1 + } + ], + "span": 61, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17ha8ba36b85ae7fbb9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 61, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 61, + "ty": 16 + }, + { + "mutability": "Not", + "span": 61, + "ty": 12 + }, + { + "mutability": "Not", + "span": 61, + "ty": 1 + }, + { + "mutability": "Not", + "span": 61, + "ty": 31 + } + ], + "span": 61, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17he70aeb4246727f24E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 61 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 61 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 61, + "ty": 1 + }, + { + "mutability": "Not", + "span": 61, + "ty": 7 + }, + { + "mutability": "Not", + "span": 61, + "ty": 1 + } + ], + "span": 61, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17heba02fa12c9fe2d9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 32 + ] + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 62 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 62, + "ty": 1 + }, + { + "mutability": "Not", + "span": 62, + "ty": 33 + } + ], + "span": 62, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::" + } + }, + "symbol_name": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha4e7fc423a077132E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 62 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 34 + }, + "span": 62, + "user_ty": null + } + }, + "target": 4, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 35 + ] + } + ] + }, + "target": 1, + "unwind": "Terminate" + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 35 + ] + } + ] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 62 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 62, + "ty": 1 + }, + { + "mutability": "Not", + "span": 62, + "ty": 36 + }, + { + "mutability": "Mut", + "span": 62, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 62, + "ty": 1 + } + ], + "span": 62, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::>" + } + }, + "symbol_name": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h63cbb232c447c463E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 62 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 38 + }, + "span": 62, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 62 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 62 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 62, + "ty": 1 + }, + { + "mutability": "Not", + "span": 62, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 62, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 62, + "ty": 1 + } + ], + "span": 62, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::>" + } + }, + "symbol_name": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h0beb4ebee2e07298E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 62 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 62, + "ty": 1 + }, + { + "mutability": "Not", + "span": 62, + "ty": 29 + } + ], + "span": 62, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd3783a560cffe87eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 64 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 65 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 41 + ] + } + ] + }, + "span": 65 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 64 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 66 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 42 + ] + } + ] + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 25 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 66 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 10, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 6 + ] + ], + "otherwise": 7 + } + } + }, + "span": 63 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 70 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 71 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 71 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 72 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 73, + "user_ty": null + } + } + ] + } + ] + }, + "span": 69 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 11 + ] + ], + "otherwise": 12 + } + } + }, + "span": 69 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 75 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 75 + } + ], + "terminator": { + "kind": "Return", + "span": 74 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 70 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 162, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 77, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 76, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 78 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 64 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 64 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 13 + }, + "span": 81 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 43 + }, + "span": 79, + "user_ty": null + } + }, + "target": 10, + "unwind": "Unreachable" + } + }, + "span": 80 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 82 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 84 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 85, + "user_ty": null + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 10, + "projection": [] + } + }, + { + "Move": { + "local": 17, + "projection": [] + } + } + ] + } + ] + }, + "span": 83 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 86 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 16, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 87, + "user_ty": null + } + } + ] + } + ] + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 87 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 64 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 1 + } + } + }, + "span": 64 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 82 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 91 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 92 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 45 + }, + "span": 32, + "user_ty": null + } + }, + 46 + ] + } + ] + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 47 + }, + "span": 32, + "user_ty": null + } + }, + 48 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 8, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 49 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 15, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 95 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 12, + "projection": [] + } + } + ], + "destination": { + "local": 11, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 16, + "kind": "ZeroSized", + "ty": 44 + }, + "span": 89, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 90 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 13, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 8 + ] + ], + "otherwise": 9 + } + } + }, + "span": 82 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 20, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 97, + "user_ty": null + } + } + } + ] + }, + "span": 97 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 96 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Copy": { + "local": 19, + "projection": [] + } + }, + "expected": false, + "msg": { + "DivisionByZero": { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 127 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 32, + "user_ty": null + } + } + }, + "target": 13, + "unwind": "Terminate" + } + }, + "span": 98 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "BinaryOp": [ + "Div", + { + "Constant": { + "const_": { + "id": 21, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 127 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 32, + "user_ty": null + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 98 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 96 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 20 + }, + "span": 99 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 18, + "projection": [] + } + } + } + ] + }, + "span": 99 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 20, + "projection": [] + } + } + ] + } + ] + }, + "span": 100 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 101 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 102 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 71 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 71 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 103, + "ty": 1 + }, + { + "mutability": "Not", + "span": 104, + "ty": 50 + }, + { + "mutability": "Not", + "span": 104, + "ty": 25 + }, + { + "mutability": "Not", + "span": 104, + "ty": 25 + }, + { + "mutability": "Not", + "span": 104, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 64, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 65, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 71, + "ty": 22 + }, + { + "mutability": "Not", + "span": 78, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 67, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 105, + "ty": 25 + }, + { + "mutability": "Not", + "span": 90, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 91, + "ty": 51 + }, + { + "mutability": "Mut", + "span": 81, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 46 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 48 + }, + { + "mutability": "Mut", + "span": 83, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 25 + }, + { + "mutability": "Not", + "span": 72, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 69, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 25 + } + ], + "span": 122, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 0, + "span": 104 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 104 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 104 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "len", + "source_info": { + "scope": 0, + "span": 104 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 106 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 107 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 108 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 109 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 110 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 111 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 112 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 113 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 114 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 115 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 111 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 116 + }, + "value": { + "Const": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] + ] + } + } + }, + "ty": 45 + }, + "span": 117, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 118 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 119 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 110 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 111 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 15, + "span": 120 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 15, + "span": 121 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "max_len", + "source_info": { + "scope": 16, + "span": 72 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "std::slice::from_raw_parts::precondition_check" + } + }, + "symbol_name": "_ZN4core5slice3raw14from_raw_parts18precondition_check17hd731fe266d532e13E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 23, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 124, + "user_ty": null + } + } + } + ] + }, + "span": 124 + } + ], + "terminator": { + "kind": "Return", + "span": 123 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 125, + "ty": 17 + }, + { + "mutability": "Not", + "span": 126, + "ty": 1 + } + ], + "span": 127, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 126 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 9, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hbf94cbfcda9701e6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 1 + }, + "span": 129 + }, + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 0, + [ + { + "Type": 9 + }, + { + "Type": 53 + } + ], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 24, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 35 + }, + "span": 130, + "user_ty": 0 + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 131, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 132 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 12, + 0, + [], + null, + null + ] + }, + [ + { + "Move": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 133 + }, + { + "kind": { + "StorageDead": 1 + }, + "span": 134 + } + ], + "terminator": { + "kind": "Return", + "span": 128 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 135, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 129, + "ty": 32 + } + ], + "span": 136, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 10, + "name": "std::string::String::new" + } + }, + "symbol_name": "_ZN5alloc6string6String3new17h10f73349ad3baa53E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Constant": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 22 + }, + "span": 137, + "user_ty": null + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 3 + } + } + }, + "span": 137 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 139 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 55 + ] + }, + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 139 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 4 + } + } + }, + "span": 138 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 141 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 3 + } + }, + "span": 140 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [ + { + "Type": 56 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 143 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 142 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 141 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 145 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 146 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 9 + ] + } + ] + }, + "span": 147 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 148 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 55 + ] + }, + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 148 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 144 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 22 + ] + } + ] + }, + "span": 149 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 7 + ] + ], + "otherwise": 6 + } + } + }, + "span": 144 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 150 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 26, + "kind": "ZeroSized", + "ty": 57 + }, + "span": 151, + "user_ty": null + } + }, + "target": 7, + "unwind": "Unreachable" + } + }, + "span": 152 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 153 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "MulUnchecked", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 154 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 155 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 155 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 156 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 157 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 15, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 158 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 159 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 160 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 161 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 59 + ] + }, + { + "Field": [ + 0, + 60 + ] + } + ] + } + } + } + ] + }, + "span": 161 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 59 + ] + }, + { + "Field": [ + 1, + 61 + ] + } + ] + } + } + } + ] + }, + "span": 161 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 162 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 163 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 42 + ] + } + ] + } + } + } + ] + }, + "span": 164 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 42 + ] + } + ] + }, + "span": 163 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 13, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 165 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 166 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 162 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 167 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Copy": { + "local": 7, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 160 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 1, + [ + { + "Type": 56 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 168 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 169 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 142 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 170, + "ty": 62 + }, + { + "mutability": "Not", + "span": 171, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 139, + "ty": 25 + }, + { + "mutability": "Not", + "span": 172, + "ty": 25 + }, + { + "mutability": "Not", + "span": 173, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 146, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 148, + "ty": 25 + }, + { + "mutability": "Not", + "span": 174, + "ty": 64 + }, + { + "mutability": "Mut", + "span": 160, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 144, + "ty": 22 + }, + { + "mutability": "Not", + "span": 152, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 156, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 175, + "ty": 60 + }, + { + "mutability": "Mut", + "span": 163, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 164, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 161, + "ty": 60 + }, + { + "mutability": "Mut", + "span": 161, + "ty": 61 + } + ], + "span": 187, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 171 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 172 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 2, + "span": 173 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 3, + "span": 174 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 176 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 6, + "span": 177 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 9, + "span": 178 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 9, + "span": 179 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 10, + "span": 180 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 60 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 11, + "span": 181 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 61 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 11, + "span": 181 + }, + "value": { + "Place": { + "local": 16, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 12, + "span": 182 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 183 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 60 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 14, + "span": 184 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 61 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 14, + "span": 184 + }, + "value": { + "Const": { + "const_": { + "id": 27, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 60 + ] + } + ], + "ty": 59 + }, + "name": "unique", + "source_info": { + "scope": 15, + "span": 185 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 61 + ] + } + ], + "ty": 59 + }, + "name": "unique", + "source_info": { + "scope": 15, + "span": 185 + }, + "value": { + "Const": { + "const_": { + "id": 27, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 60 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 16, + "span": 186 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 61 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 16, + "span": 186 + }, + "value": { + "Const": { + "const_": { + "id": 27, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 13, + "name": "alloc::raw_vec::RawVec::::current_memory" + } + }, + "symbol_name": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h36f247bc9566572eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 189 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 189 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 190 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 191 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 188 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 164 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 42 + ] + } + ] + } + } + } + ] + }, + "span": 164 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Move": { + "local": 8, + "projection": [] + } + }, + 66 + ] + } + ] + }, + "span": 195 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 196 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 197 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 197 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 198 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [] + } + ] + } + ] + }, + "span": 198 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 199 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 200 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 201 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [] + } + ] + } + ] + }, + "span": 201 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 202 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 58 + ] + } + ] + } + } + } + ] + }, + "span": 202 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 203 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 203 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 203 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 203 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 204 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 12, + "projection": [ + { + "Field": [ + 0, + 67 + ] + } + ] + } + } + } + ] + }, + "span": 204 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Discriminant": { + "local": 13, + "projection": [] + } + } + ] + }, + "span": 205 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 29, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 21 + }, + "span": 205, + "user_ty": null + } + } + ] + } + ] + }, + "span": 205 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 30, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 21 + }, + "span": 205, + "user_ty": null + } + } + ] + } + ] + }, + "span": 205 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + } + ] + }, + "span": 205 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 17, + "projection": [] + } + } + } + }, + "span": 205 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 25 + ] + } + ] + }, + "span": 205 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 206 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 203 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 203 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 203 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 203 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 207 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 208 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 28, + "kind": "ZeroSized", + "ty": 65 + }, + "span": 192, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 193 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 209 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 211 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 212 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 212 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 2 + } + }, + "span": 210 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 213, + "ty": 1 + }, + { + "mutability": "Not", + "span": 214, + "ty": 68 + }, + { + "mutability": "Not", + "span": 215, + "ty": 60 + }, + { + "mutability": "Not", + "span": 216, + "ty": 64 + }, + { + "mutability": "Mut", + "span": 217, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 189, + "ty": 69 + }, + { + "mutability": "Mut", + "span": 194, + "ty": 66 + }, + { + "mutability": "Mut", + "span": 197, + "ty": 64 + }, + { + "mutability": "Mut", + "span": 164, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 198, + "ty": 69 + }, + { + "mutability": "Mut", + "span": 200, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 201, + "ty": 69 + }, + { + "mutability": "Mut", + "span": 202, + "ty": 58 + }, + { + "mutability": "Not", + "span": 204, + "ty": 67 + }, + { + "mutability": "Mut", + "span": 204, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 205, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 205, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 205, + "ty": 22 + } + ], + "span": 223, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 214 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 0, + "span": 215 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 216 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 218 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 183 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 219 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 3, + "span": 220 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 218 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 221 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 222 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + } + ] + } + ], + "id": 17, + "name": "::deallocate" + } + }, + "symbol_name": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h04db9e7ed4d0984aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 226 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 227 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 228 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 35 + ] + } + ] + } + ] + } + ] + }, + "span": 228 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 229 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 35 + ] + }, + { + "Field": [ + 0, + 59 + ] + }, + { + "Field": [ + 0, + 60 + ] + } + ] + } + } + } + ] + }, + "span": 230 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 164 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 7, + "projection": [ + { + "Field": [ + 0, + 42 + ] + } + ] + } + } + } + ] + }, + "span": 164 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 66 + ] + } + ] + }, + "span": 195 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 196 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 229 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 231 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 232 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 232 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 71, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 233 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 234 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 234 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 31, + "kind": "ZeroSized", + "ty": 70 + }, + "span": 224, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 225 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 236 + } + ], + "terminator": { + "kind": "Return", + "span": 235 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 237, + "ty": 1 + }, + { + "mutability": "Not", + "span": 238, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 226, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 227, + "ty": 66 + }, + { + "mutability": "Mut", + "span": 232, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 228, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 164, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 230, + "ty": 60 + } + ], + "span": 246, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 238 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 239 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 240 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 60 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 3, + "span": 241 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 61 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 3, + "span": 241 + }, + "value": { + "Const": { + "const_": { + "id": 27, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 183 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 5, + "span": 242 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 5, + "span": 243 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 6, + "span": 244 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 6, + "span": 245 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + } + ] + } + ], + "id": 18, + "name": " as std::ops::Drop>::drop" + } + }, + "symbol_name": "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha7e6a1ccddf30af0E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 247 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 248 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 248 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 249 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 249 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Ne", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 247 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 247 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 251 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 251 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 22 + }, + "span": 252, + "user_ty": null + } + } + } + ] + }, + "span": 252 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 253 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 250 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 251 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 251 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 253 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 256 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 256 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 32, + "kind": "ZeroSized", + "ty": 73 + }, + "span": 254, + "user_ty": null + } + }, + "target": 5, + "unwind": "Unreachable" + } + }, + "span": 255 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 257 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 257 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 33, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 258, + "user_ty": null + } + } + ] + } + ] + }, + "span": 259 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 258 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 250 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 250 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 262 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 261 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 263 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 264 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 42 + ] + } + ] + }, + "span": 263 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 265 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 2, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 264 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 42 + ] + } + ] + }, + "span": 265 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 34, + "kind": "ZeroSized", + "ty": 74 + }, + "span": 260, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 261 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 266, + "ty": 22 + }, + { + "mutability": "Not", + "span": 267, + "ty": 75 + }, + { + "mutability": "Not", + "span": 268, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 247, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 248, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 249, + "ty": 25 + }, + { + "mutability": "Not", + "span": 269, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 261, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 263, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 265, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 256, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 270, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 270, + "ty": 76 + } + ], + "span": 273, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 267 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 268 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 269 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "val", + "source_info": { + "scope": 2, + "span": 271 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 272 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 272 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 19, + "name": "<[u8] as core::slice::cmp::SlicePartialEq>::equal" + } + }, + "symbol_name": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h48a560245506d1e3E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 275 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 276 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 276 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 35, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 274, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 275 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 278 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [] + } + } + ] + }, + "span": 275 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 2 + ], + [ + 0, + 4 + ] + ], + "otherwise": 5 + } + } + }, + "span": 277 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 56 + ] + }, + { + "Field": [ + 0, + 60 + ] + } + ] + } + } + } + ] + }, + "span": 281 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 56 + ] + }, + { + "Field": [ + 1, + 64 + ] + } + ] + } + } + } + ] + }, + "span": 282 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 283 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 2, + 53 + ] + } + ] + } + ] + } + ] + }, + "span": 283 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 36, + "kind": "ZeroSized", + "ty": 78 + }, + "span": 279, + "user_ty": null + } + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 280 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 285 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 284 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 287 + } + ], + "terminator": { + "kind": "Return", + "span": 286 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 288 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 289, + "ty": 1 + }, + { + "mutability": "Not", + "span": 290, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 275, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 276, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 277, + "ty": 6 + }, + { + "mutability": "Not", + "span": 281, + "ty": 60 + }, + { + "mutability": "Not", + "span": 282, + "ty": 64 + }, + { + "mutability": "Mut", + "span": 283, + "ty": 68 + } + ], + "span": 288, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 290 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 281 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 1, + "span": 282 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + } + ] + } + ], + "id": 20, + "name": " as std::ops::Drop>::drop" + } + }, + "symbol_name": "_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdec771535c18b312E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 14 + }, + "span": 292 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 293 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 293 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 32 + ] + } + ] + } + ] + } + ] + }, + "span": 293 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 294 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 295 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 32 + ] + }, + { + "Field": [ + 0, + 35 + ] + } + ] + } + ] + } + ] + }, + "span": 295 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 296 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 32 + ] + }, + { + "Field": [ + 0, + 35 + ] + }, + { + "Field": [ + 0, + 59 + ] + }, + { + "Field": [ + 0, + 60 + ] + } + ] + } + } + } + ] + }, + "span": 230 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 42 + ] + } + ] + } + } + } + ] + }, + "span": 164 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 296 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 297 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 298 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 32 + ] + }, + { + "Field": [ + 1, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 298 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 291 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 22 + ] + } + ] + }, + "span": 149 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 11, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 291 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 13 + }, + "span": 301 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 50 + ] + } + ] + }, + "span": 301 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 13, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 32, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 32, + "user_ty": null + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 37, + "kind": "ZeroSized", + "ty": 79 + }, + "span": 299, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 300 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 303 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 3 + } + }, + "span": 302 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 11 + }, + "span": 306 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 71, + "Not" + ] + }, + [ + { + "Copy": { + "local": 7, + "projection": [] + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 307 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 308 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 308 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 14, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 293 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + 24 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 311 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 292 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 312 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 313 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 313 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 314 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + 75 + ] + } + ] + }, + "span": 315 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 16, + "projection": [] + } + ] + } + ] + }, + "span": 314 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 316 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 75 + ] + } + ] + }, + "span": 315 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 18, + "projection": [] + } + ] + } + ] + }, + "span": 316 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 16, + "projection": [] + } + }, + { + "Copy": { + "local": 18, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 38, + "kind": "ZeroSized", + "ty": 80 + }, + "span": 304, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 305 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 17 + }, + "span": 318 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 318 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 313 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 313 + } + ], + "terminator": { + "kind": "Return", + "span": 317 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 319, + "ty": 22 + }, + { + "mutability": "Not", + "span": 320, + "ty": 81 + }, + { + "mutability": "Not", + "span": 321, + "ty": 82 + }, + { + "mutability": "Mut", + "span": 321, + "ty": 24 + }, + { + "mutability": "Not", + "span": 322, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 293, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 293, + "ty": 83 + }, + { + "mutability": "Mut", + "span": 294, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 298, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 295, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 230, + "ty": 60 + }, + { + "mutability": "Mut", + "span": 291, + "ty": 22 + }, + { + "mutability": "Not", + "span": 300, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 301, + "ty": 50 + }, + { + "mutability": "Not", + "span": 323, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 314, + "ty": 84 + }, + { + "mutability": "Not", + "span": 314, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 316, + "ty": 84 + }, + { + "mutability": "Not", + "span": 316, + "ty": 75 + } + ], + "span": 348, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 320 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 321 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 324 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 1, + "span": 325 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 85 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 326 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 327 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 328 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 329 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 240 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 60 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 7, + "span": 241 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 61 + ] + } + ], + "ty": 59 + }, + "name": "self", + "source_info": { + "scope": 7, + "span": 241 + }, + "value": { + "Const": { + "const_": { + "id": 27, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 183 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 9, + "span": 330 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 9, + "span": 331 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 14, + "span": 332 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 14, + "span": 333 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 15, + "span": 334 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 15, + "span": 335 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "v", + "source_info": { + "scope": 16, + "span": 336 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 337 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 85 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 17, + "span": 338 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 18, + "span": 339 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 18, + "span": 340 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 85 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 19, + "span": 337 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 85 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 19, + "span": 338 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 20, + "span": 341 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 20, + "span": 342 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 21, + "span": 343 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 22, + "span": 343 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 23, + "span": 344 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 23, + "span": 345 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 346 + }, + "value": { + "Place": { + "local": 16, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 24, + "span": 347 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + } + ] + } + ], + "id": 21, + "name": ">::eq" + } + }, + "symbol_name": "_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h563fb1f7b684b2a7E" + } + ] +} diff --git a/tests/integration/programs/std-to-string.rs b/tests/integration/programs/std-to-string.rs new file mode 100644 index 0000000..5cbb432 --- /dev/null +++ b/tests/integration/programs/std-to-string.rs @@ -0,0 +1,4 @@ +fn main() { + let a:String = "abcd".to_string(); + assert!(a == "abcd"); +} \ No newline at end of file diff --git a/tests/integration/programs/std-to-string.smir.json.expected b/tests/integration/programs/std-to-string.smir.json.expected new file mode 100644 index 0000000..e91ac69 --- /dev/null +++ b/tests/integration/programs/std-to-string.smir.json.expected @@ -0,0 +1,27425 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "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, + 112, + 116, + 114, + 58, + 58, + 99, + 111, + 112, + 121, + 95, + 110, + 111, + 110, + 111, + 118, + 101, + 114, + 108, + 97, + 112, + 112, + 105, + 110, + 103, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 98, + 111, + 116, + 104, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 97, + 114, + 103, + 117, + 109, + 101, + 110, + 116, + 115, + 32, + 97, + 114, + 101, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108, + 32, + 97, + 110, + 100, + 32, + 116, + 104, + 101, + 32, + 115, + 112, + 101, + 99, + 105, + 102, + 105, + 101, + 100, + 32, + 109, + 101, + 109, + 111, + 114, + 121, + 32, + 114, + 97, + 110, + 103, + 101, + 115, + 32, + 100, + 111, + 32, + 110, + 111, + 116, + 32, + 111, + 118, + 101, + 114, + 108, + 97, + 112 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 23 + ] + ] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 8, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 24 + ] + ] + } + } + } + ], + [ + 4, + { + "Memory": { + "align": 1, + "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, + 115, + 105, + 122, + 101, + 58, + 58, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 95, + 109, + 117, + 108, + 32, + 99, + 97, + 110, + 110, + 111, + 116, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 5, + { + "Memory": { + "align": 1, + "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, + 112, + 116, + 114, + 58, + 58, + 114, + 101, + 97, + 100, + 95, + 118, + 111, + 108, + 97, + 116, + 105, + 108, + 101, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 97, + 114, + 103, + 117, + 109, + 101, + 110, + 116, + 32, + 105, + 115, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 6, + { + "Memory": { + "align": 1, + "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, + 78, + 111, + 110, + 78, + 117, + 108, + 108, + 58, + 58, + 110, + 101, + 119, + 95, + 117, + 110, + 99, + 104, + 101, + 99, + 107, + 101, + 100, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 97, + 116, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 105, + 115, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 7, + { + "Memory": { + "align": 1, + "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, + 115, + 108, + 105, + 99, + 101, + 58, + 58, + 102, + 114, + 111, + 109, + 95, + 114, + 97, + 119, + 95, + 112, + 97, + 114, + 116, + 115, + 32, + 114, + 101, + 113, + 117, + 105, + 114, + 101, + 115, + 32, + 116, + 104, + 101, + 32, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 32, + 116, + 111, + 32, + 98, + 101, + 32, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 32, + 97, + 110, + 100, + 32, + 110, + 111, + 110, + 45, + 110, + 117, + 108, + 108, + 44, + 32, + 97, + 110, + 100, + 32, + 116, + 104, + 101, + 32, + 116, + 111, + 116, + 97, + 108, + 32, + 115, + 105, + 122, + 101, + 32, + 111, + 102, + 32, + 116, + 104, + 101, + 32, + 115, + 108, + 105, + 99, + 101, + 32, + 110, + 111, + 116, + 32, + 116, + 111, + 32, + 101, + 120, + 99, + 101, + 101, + 100, + 32, + 96, + 105, + 115, + 105, + 122, + 101, + 58, + 58, + 77, + 65, + 88, + 96 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 8, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 110, + 111, + 110, + 111, + 118, + 101, + 114, + 108, + 97, + 112, + 112, + 105, + 110, + 103, + 58, + 32, + 96, + 115, + 105, + 122, + 101, + 95, + 111, + 102, + 58, + 58, + 60, + 84, + 62, + 40, + 41, + 32, + 42, + 32, + 99, + 111, + 117, + 110, + 116, + 96, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119, + 115, + 32, + 97, + 32, + 117, + 115, + 105, + 122, + 101 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 10, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 98, + 99, + 100 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 11, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 25 + ] + ] + } + } + } + ], + [ + 12, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 61, + 61, + 32, + 34, + 97, + 98, + 99, + 100, + 34 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 13, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 98, + 99, + 100 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 23, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 24, + { + "Memory": { + "align": 1, + "bytes": [ + 105, + 115, + 95, + 97, + 108, + 105, + 103, + 110, + 101, + 100, + 95, + 116, + 111, + 58, + 32, + 97, + 108, + 105, + 103, + 110, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 112, + 111, + 119, + 101, + 114, + 45, + 111, + 102, + 45, + 116, + 119, + 111 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 25, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 98, + 99, + 100 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h90dbb03933786387E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h02d1417dff5cd826E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h5b4cd0dacfd81eb4E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h33b8a6e5a0a7dfc4E" + } + ], + [ + 30, + { + "NormalSym": "_ZN4core9ub_checks17is_nonoverlapping7runtime17h6c25e126a2602078E" + } + ], + [ + 31, + { + "NormalSym": "_ZN4core9panicking14panic_nounwind17hee6445121510e179E" + } + ], + [ + 32, + { + "IntrinsicSym": "ctpop" + } + ], + [ + 33, + { + "NormalSym": "_ZN4core9panicking9panic_fmt17h8510a50a874ddcc2E" + } + ], + [ + 46, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17ha82058174da31196E" + } + ], + [ + 48, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h16fd98eaacdce366E" + } + ], + [ + 51, + { + "NormalSym": "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha2b06c17550c4594E" + } + ], + [ + 55, + { + "NormalSym": "_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h9f21d22221a217aaE" + } + ], + [ + 61, + { + "NormalSym": "_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_mul18precondition_check17h147a48bdfc9cebaeE" + } + ], + [ + 65, + { + "IntrinsicSym": "unlikely" + } + ], + [ + 67, + { + "NormalSym": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17hde8132f4f12532dbE" + } + ], + [ + 69, + { + "NormalSym": "_ZN5alloc7raw_vec12handle_error17h9fbab9c4138a4cf5E" + } + ], + [ + 73, + { + "NormalSym": "_ZN4core10intrinsics19copy_nonoverlapping18precondition_check17h9f024a4c9fa2be1dE" + } + ], + [ + 78, + { + "NormalSym": "__rust_alloc" + } + ], + [ + 79, + { + "NormalSym": "_ZN4core3ptr13read_volatile18precondition_check17h728cba60bee17784E" + } + ], + [ + 80, + { + "IntrinsicSym": "volatile_load" + } + ], + [ + 82, + { + "NormalSym": "__rust_alloc_zeroed" + } + ], + [ + 83, + { + "NormalSym": "_ZN5alloc5alloc5alloc17h0dca39f7982a9f7aE" + } + ], + [ + 84, + { + "NormalSym": "_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17hee0e8c7ad69a05ffE" + } + ], + [ + 98, + { + "NormalSym": "_ZN4core5alloc6layout6Layout5array5inner17h94147f78f9e43dd8E" + } + ], + [ + 99, + { + "NormalSym": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$15allocate_zeroed17hd1378b6fec98ecddE" + } + ], + [ + 100, + { + "NormalSym": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hc5b4e4962fb0f40dE" + } + ], + [ + 102, + { + "NormalSym": "__rust_dealloc" + } + ], + [ + 103, + { + "NormalSym": "_ZN5alloc5alloc6Global10alloc_impl17h3e8e7b3e0f598119E" + } + ], + [ + 104, + { + "NoOpSym": "" + } + ], + [ + 105, + { + "IntrinsicSym": "size_of_val" + } + ], + [ + 106, + { + "IntrinsicSym": "compare_bytes" + } + ], + [ + 107, + { + "NormalSym": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hba8a41dea17e13ccE" + } + ], + [ + 108, + { + "NormalSym": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h92716973ef61186eE" + } + ], + [ + 109, + { + "NormalSym": "_ZN4core5slice3raw14from_raw_parts18precondition_check17hf3a78f9699bce1d6E" + } + ], + [ + 110, + { + "NormalSym": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h812ed04340e8bc65E" + } + ], + [ + 116, + { + "NormalSym": "_ZN47_$LT$str$u20$as$u20$alloc..string..ToString$GT$9to_string17h34ab2d3d44afb0cfE" + } + ], + [ + 117, + { + "NormalSym": "_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h9c119bf760646bc2E" + } + ], + [ + 118, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 120, + { + "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h5579b46778b517b5E" + } + ], + [ + 121, + { + "NoOpSym": "" + } + ], + [ + 122, + { + "NormalSym": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9c3d7457c17d0509E" + } + ], + [ + 123, + { + "NoOpSym": "" + } + ], + [ + 124, + { + "NormalSym": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h471900168bc51ec1E" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 75, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 10 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 771, + "user_ty": null + } + } + } + ] + }, + "span": 771 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 74, + "kind": "ZeroSized", + "ty": 116 + }, + "span": 769, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 770 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 773 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 77, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 11 + ] + ] + } + } + }, + "ty": 112 + }, + "span": 774, + "user_ty": null + } + } + } + ] + }, + "span": 774 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 76, + "kind": "ZeroSized", + "ty": 117 + }, + "span": 772, + "user_ty": null + } + }, + "target": 2, + "unwind": { + "Cleanup": 6 + } + } + }, + "span": 772 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 772 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 775 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 79, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 12 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 78, + "kind": "ZeroSized", + "ty": 118 + }, + "span": 776, + "user_ty": null + } + }, + "target": null, + "unwind": { + "Cleanup": 6 + } + } + }, + "span": 776 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 777 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 7, + "unwind": "Terminate" + } + }, + "span": 775 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 778 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 779, + "ty": 1 + }, + { + "mutability": "Not", + "span": 780, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 771, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 772, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 773, + "ty": 111 + }, + { + "mutability": "Mut", + "span": 774, + "ty": 112 + }, + { + "mutability": "Mut", + "span": 776, + "ty": 41 + } + ], + "span": 778, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 780 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 75, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 13 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 774, + "user_ty": null + } + } + } + ] + }, + "span": 774 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 774 + } + ], + "terminator": { + "kind": "Return", + "span": 774 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 774, + "ty": 112 + }, + { + "mutability": "Mut", + "span": 774, + "ty": 25 + } + ], + "span": 774, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 41, + "name": "main" + } + }, + "symbol_name": "_ZN13std_to_string4main17hbc4dd8701049b509E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h5ce59742aa8ff7b2E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h16fd98eaacdce366E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h90dbb03933786387E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 45 + }, + { + "kind": { + "StorageLive": 2 + }, + "span": 46 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 23 + ] + } + ] + }, + "span": 47 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 22 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": 0 + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 44 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 4, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 49 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 50 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 45 + } + ], + "terminator": { + "kind": "Return", + "span": 48 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 51, + "ty": 24 + }, + { + "mutability": "Not", + "span": 52, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 46, + "ty": 26 + }, + { + "mutability": "Not", + "span": 53, + "ty": 23 + } + ], + "span": 64, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 52 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "s", + "source_info": { + "scope": 1, + "span": 54 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 55 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 56 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 57 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 58 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 59 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 6, + "span": 60 + }, + "value": { + "Const": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 22 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "s", + "source_info": { + "scope": 7, + "span": 61 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 7, + "span": 62 + }, + "value": { + "Const": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 22 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "bytes", + "source_info": { + "scope": 8, + "span": 63 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 3, + "name": "::to_string" + } + }, + "symbol_name": "_ZN47_$LT$str$u20$as$u20$alloc..string..ToString$GT$9to_string17h34ab2d3d44afb0cfE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [], + "id": 5, + "name": "std::intrinsics::size_of_val::<[u8]>" + } + }, + "symbol_name": "_ZN4core10intrinsics11size_of_val17hfbc7cf1f1af1c1e6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 5, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 66 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 66 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 12, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ] + ], + "otherwise": 9 + } + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 7 + }, + "span": 70 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 29 + ] + } + ] + }, + "span": 71 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 70 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 21, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 13 + ] + ], + "otherwise": 14 + } + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 74 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 72, + "user_ty": null + } + }, + "target": 18, + "unwind": "Terminate" + } + }, + "span": 73 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 76 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 76 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 76 + } + ], + "terminator": { + "kind": "Return", + "span": 75 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 7 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 7 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 7 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 166, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 78, + "user_ty": null + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 77, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 79 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 12 + }, + "span": 66 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 66 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 15 + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 15, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 12, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 15 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 86, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Move": { + "local": 19, + "projection": [] + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 18, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 88, + "user_ty": null + } + } + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 66 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 6 + ] + ], + "otherwise": 1 + } + } + }, + "span": 66 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 15 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 32, + "user_ty": null + } + }, + 35 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 36 + }, + "span": 32, + "user_ty": null + } + }, + 37 + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 16, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 38 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 17, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 14, + "projection": [] + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 15, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 10 + ] + ], + "otherwise": 11 + } + } + }, + "span": 83 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 21 + }, + "span": 70 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 70 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 24 + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 24, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 17, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 24 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 27 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 28 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 86, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Move": { + "local": 28, + "projection": [] + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 28 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 27, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 88, + "user_ty": null + } + } + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageDead": 27 + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 70 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 2 + } + } + }, + "span": 70 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 24 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 25 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 32, + "user_ty": null + } + }, + 35 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 26 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 26, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 36 + }, + "span": 32, + "user_ty": null + } + }, + 37 + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 25, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 38 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 26, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 26 + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 25 + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 23, + "projection": [] + } + } + ], + "destination": { + "local": 22, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 24, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 15 + ] + ], + "otherwise": 16 + } + } + }, + "span": 83 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 74 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 97, + "ty": 1 + }, + { + "mutability": "Not", + "span": 98, + "ty": 29 + }, + { + "mutability": "Not", + "span": 98, + "ty": 39 + }, + { + "mutability": "Not", + "span": 98, + "ty": 28 + }, + { + "mutability": "Not", + "span": 98, + "ty": 28 + }, + { + "mutability": "Not", + "span": 98, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 70, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 71, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 40 + }, + { + "mutability": "Not", + "span": 79, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 28 + }, + { + "mutability": "Not", + "span": 91, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 28 + }, + { + "mutability": "Not", + "span": 91, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 28 + } + ], + "span": 118, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dst", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 5, + "composite": null, + "name": "count", + "source_info": { + "scope": 0, + "span": 98 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 100 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 101 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 102 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 103 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 104 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 105 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 106 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 107 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 108 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 109 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 110 + }, + "value": { + "Const": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 111, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 112 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 113 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 104 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 15, + "span": 100 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 15, + "span": 101 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 16, + "span": 102 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 18, + "span": 103 + }, + "value": { + "Place": { + "local": 20, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 19, + "span": 104 + }, + "value": { + "Place": { + "local": 20, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 20, + "span": 105 + }, + "value": { + "Place": { + "local": 20, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 21, + "span": 106 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 21, + "span": 107 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 22, + "span": 108 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 23, + "span": 109 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 105 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 25, + "span": 110 + }, + "value": { + "Const": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 111, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 26, + "span": 112 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 26, + "span": 113 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 27, + "span": 104 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 28, + "span": 105 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 29, + "span": 114 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dst", + "source_info": { + "scope": 29, + "span": 115 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "size", + "source_info": { + "scope": 29, + "span": 116 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "count", + "source_info": { + "scope": 29, + "span": 117 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "std::intrinsics::copy_nonoverlapping::precondition_check" + } + }, + "symbol_name": "_ZN4core10intrinsics19copy_nonoverlapping18precondition_check17h9f024a4c9fa2be1dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [] + } + } + } + ] + }, + "span": 120 + } + ], + "terminator": { + "kind": "Return", + "span": 119 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 121, + "ty": 40 + }, + { + "mutability": "Not", + "span": 122, + "ty": 40 + } + ], + "span": 123, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "b", + "source_info": { + "scope": 0, + "span": 122 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 8, + "name": "std::intrinsics::unlikely" + } + }, + "symbol_name": "_ZN4core10intrinsics8unlikely17h1ce0cbb60d79001aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 125 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 126 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 127 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 44 + ] + } + ] + }, + "span": 127 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 128 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 44 + ] + } + ] + }, + "span": 128 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + } + ] + }, + "span": 126 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 129 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 129 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 130 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [ + { + "Field": [ + 1, + 40 + ] + } + ] + } + } + } + ] + }, + "span": 131 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 132 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 125 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 124 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 69, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 134, + "user_ty": null + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 133, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 135 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 136 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 137, + "ty": 1 + }, + { + "mutability": "Not", + "span": 138, + "ty": 28 + }, + { + "mutability": "Not", + "span": 138, + "ty": 28 + }, + { + "mutability": "Not", + "span": 135, + "ty": 41 + }, + { + "mutability": "Not", + "span": 130, + "ty": 44 + }, + { + "mutability": "Not", + "span": 131, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 126, + "ty": 45 + }, + { + "mutability": "Mut", + "span": 127, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 128, + "ty": 44 + } + ], + "span": 141, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "lhs", + "source_info": { + "scope": 0, + "span": 138 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 0, + "span": 138 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 139 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 1, + "span": 140 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 2, + "span": 130 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 131 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 9, + "name": "core::num::::unchecked_mul::precondition_check" + } + }, + "symbol_name": "_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_mul18precondition_check17h147a48bdfc9cebaeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 20, + "kind": "ZeroSized", + "ty": 46 + }, + "span": 142, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 142 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 142, + "ty": 16 + }, + { + "mutability": "Not", + "span": 142, + "ty": 47 + }, + { + "mutability": "Not", + "span": 142, + "ty": 1 + } + ], + "span": 142, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 10, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h2bff7de0843201b5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 142 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 142, + "ty": 1 + }, + { + "mutability": "Not", + "span": 142, + "ty": 7 + }, + { + "mutability": "Not", + "span": 142, + "ty": 1 + } + ], + "span": 142, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 10, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h5b4cd0dacfd81eb4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 142 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 21, + "kind": "ZeroSized", + "ty": 48 + }, + "span": 142, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 142 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 142 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 142, + "ty": 16 + }, + { + "mutability": "Not", + "span": 142, + "ty": 12 + }, + { + "mutability": "Not", + "span": 142, + "ty": 1 + }, + { + "mutability": "Not", + "span": 142, + "ty": 49 + } + ], + "span": 142, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 10, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17ha82058174da31196E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 143 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 143 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 6, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 4 + } + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 145 + } + ], + "terminator": { + "kind": "Return", + "span": 144 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 22, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 110, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 5 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 147, + "user_ty": null + } + } + ], + "destination": { + "local": 4, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 146, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 148 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 143 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 2 + } + }, + "span": 143 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 7, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 86, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 13, + "projection": [] + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 88, + "user_ty": null + } + } + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 143 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 143 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 32, + "user_ty": null + } + }, + 35 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 36 + }, + "span": 32, + "user_ty": null + } + }, + 37 + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 10, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 38 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 5 + ] + ], + "otherwise": 6 + } + } + }, + "span": 83 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 149, + "ty": 1 + }, + { + "mutability": "Not", + "span": 150, + "ty": 29 + }, + { + "mutability": "Not", + "span": 150, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 143, + "ty": 40 + }, + { + "mutability": "Not", + "span": 148, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 28 + }, + { + "mutability": "Not", + "span": 91, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 28 + } + ], + "span": 151, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 0, + "span": 150 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 150 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 100 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 101 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 102 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 103 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 104 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 105 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 106 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 107 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 108 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 109 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 110 + }, + "value": { + "Const": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 111, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 112 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 113 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 104 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 11, + "name": "std::ptr::read_volatile::precondition_check" + } + }, + "symbol_name": "_ZN4core3ptr13read_volatile18precondition_check17h728cba60bee17784E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 152 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 152, + "ty": 1 + }, + { + "mutability": "Not", + "span": 152, + "ty": 50 + } + ], + "span": 152, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "std::ptr::drop_in_place::" + } + }, + "symbol_name": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h5579b46778b517b5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 152 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 23, + "kind": "ZeroSized", + "ty": 51 + }, + "span": 152, + "user_ty": null + } + }, + "target": 4, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 52 + ] + } + ] + }, + "target": 1, + "unwind": "Terminate" + } + }, + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 52 + ] + } + ] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 152 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 152, + "ty": 1 + }, + { + "mutability": "Not", + "span": 152, + "ty": 53 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 1 + } + ], + "span": 152, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "std::ptr::drop_in_place::>" + } + }, + "symbol_name": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9c3d7457c17d0509E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 152 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 24, + "kind": "ZeroSized", + "ty": 55 + }, + "span": 152, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 152 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 152 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 152, + "ty": 1 + }, + { + "mutability": "Not", + "span": 152, + "ty": 56 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 57 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 1 + } + ], + "span": 152, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "std::ptr::drop_in_place::>" + } + }, + "symbol_name": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h471900168bc51ec1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 152 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 152, + "ty": 1 + }, + { + "mutability": "Not", + "span": 152, + "ty": 47 + } + ], + "span": 152, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 12, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd383971480c11f2aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 154 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 155 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 156 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 157 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 154 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 153 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 153 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 25, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 93, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 6 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 159, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 158, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 160 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 153 + } + ], + "terminator": { + "kind": "Return", + "span": 161 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 162, + "ty": 1 + }, + { + "mutability": "Not", + "span": 163, + "ty": 39 + }, + { + "mutability": "Not", + "span": 160, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 155, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 156, + "ty": 28 + } + ], + "span": 168, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 0, + "span": 163 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 164 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 2, + "span": 165 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 166 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 167 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 13, + "name": "std::ptr::NonNull::::new_unchecked::precondition_check" + } + }, + "symbol_name": "_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17hee0e8c7ad69a05ffE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 1 + } + } + }, + "span": 169 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 171 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 170 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 172 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 173 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 174 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 175 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Discriminant": { + "local": 13, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 17, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 175 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 175 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Move": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 179, + "user_ty": null + } + } + ] + } + ] + }, + "span": 173 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 180 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 127 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + } + ] + }, + "span": 181 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 180 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 170, + "user_ty": null + } + } + ] + } + ] + }, + "span": 170 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 7, + "projection": [] + } + }, + "expected": false, + "msg": { + "DivisionByZero": { + "Copy": { + "local": 6, + "projection": [] + } + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 170 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "Div", + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 170 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 182 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Gt", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 171 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 171 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 182 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 29, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 60 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 184 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 185 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 183 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 182 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 185 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 186 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 18, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ] + ], + "otherwise": 7 + } + } + }, + "span": 186 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 183 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 19, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 30, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 188, + "user_ty": null + } + }, + "target": 8, + "unwind": "Unreachable" + } + }, + "span": 189 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 18 + }, + "span": 190 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "BinaryOp": [ + "MulUnchecked", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + { + "Copy": { + "local": 3, + "projection": [] + } + } + ] + } + ] + }, + "span": 191 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 192 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 193 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Discriminant": { + "local": 20, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 24, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 194 + }, + { + "kind": { + "StorageDead": 23 + }, + "span": 194 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 194 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 194 + }, + { + "kind": { + "StorageLive": 25 + }, + "span": 195 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 10, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 196 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 15, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 25, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 197 + }, + { + "kind": { + "StorageDead": 25 + }, + "span": 198 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 199 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 63 + }, + { + "Type": 64 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 9, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 200 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 201 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 183 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 202, + "ty": 60 + }, + { + "mutability": "Not", + "span": 203, + "ty": 28 + }, + { + "mutability": "Not", + "span": 204, + "ty": 62 + }, + { + "mutability": "Not", + "span": 205, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 171, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 170, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 172, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 170, + "ty": 40 + }, + { + "mutability": "Not", + "span": 206, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 192, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 193, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 173, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 174, + "ty": 28 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 186, + "ty": 40 + }, + { + "mutability": "Not", + "span": 189, + "ty": 1 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 195, + "ty": 62 + } + ], + "span": 214, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "element_size", + "source_info": { + "scope": 0, + "span": 203 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 204 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "n", + "source_info": { + "scope": 0, + "span": 205 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "array_size", + "source_info": { + "scope": 1, + "span": 206 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 2, + "span": 207 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 208 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 209 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 4, + "span": 210 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 208 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 8, + "span": 211 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 8, + "span": 212 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 9, + "span": 213 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + } + ] + } + ], + "id": 14, + "name": "std::alloc::Layout::array::inner" + } + }, + "symbol_name": "_ZN4core5alloc6layout6Layout5array5inner17h94147f78f9e43dd8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 215 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 216 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 29 + ] + } + ] + }, + "span": 216 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 215 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 67 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 68 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 67 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 10, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 6 + ] + ], + "otherwise": 7 + } + } + }, + "span": 65 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 218 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 219 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 219 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 220 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 221, + "user_ty": null + } + } + ] + } + ] + }, + "span": 217 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 11 + ] + ], + "otherwise": 12 + } + } + }, + "span": 217 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 223 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 223 + } + ], + "terminator": { + "kind": "Return", + "span": 222 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 218 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 32 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 31, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 162, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 225, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 224, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 226 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 215 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 215 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 13 + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 10, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 84 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 86, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Copy": { + "local": 10, + "projection": [] + } + }, + { + "Move": { + "local": 17, + "projection": [] + } + } + ] + } + ] + }, + "span": 84 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 87 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 16, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 88, + "user_ty": null + } + } + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 88 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 215 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 1 + } + } + }, + "span": 215 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 83 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 92 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 93 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 32, + "user_ty": null + } + }, + 35 + ] + } + ] + }, + "span": 93 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 36 + }, + "span": 32, + "user_ty": null + } + }, + 37 + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [ + { + "Lifetime": { + "kind": "ReErased" + } + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 38 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 15, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 96 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 96 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 12, + "projection": [] + } + } + ], + "destination": { + "local": 11, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 90, + "user_ty": null + } + }, + "target": null, + "unwind": "Terminate" + } + }, + "span": 91 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 13, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 8 + ] + ], + "otherwise": 9 + } + } + }, + "span": 83 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 32, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 228, + "user_ty": null + } + } + } + ] + }, + "span": 228 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 227 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Copy": { + "local": 19, + "projection": [] + } + }, + "expected": false, + "msg": { + "DivisionByZero": { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 127 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + }, + "target": 13, + "unwind": "Terminate" + } + }, + "span": 229 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "BinaryOp": [ + "Div", + { + "Constant": { + "const_": { + "id": 28, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 127 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + }, + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 229 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 227 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 20 + }, + "span": 230 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 18, + "projection": [] + } + } + } + ] + }, + "span": 230 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 20, + "projection": [] + } + } + ] + } + ] + }, + "span": 231 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 232 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 233 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 219 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 219 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 234, + "ty": 1 + }, + { + "mutability": "Not", + "span": 235, + "ty": 39 + }, + { + "mutability": "Not", + "span": 235, + "ty": 28 + }, + { + "mutability": "Not", + "span": 235, + "ty": 28 + }, + { + "mutability": "Not", + "span": 235, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 215, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 216, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 219, + "ty": 40 + }, + { + "mutability": "Not", + "span": 226, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 99, + "ty": 28 + }, + { + "mutability": "Not", + "span": 91, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 92, + "ty": 42 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 43 + }, + { + "mutability": "Mut", + "span": 93, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 94, + "ty": 37 + }, + { + "mutability": "Mut", + "span": 84, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 85, + "ty": 28 + }, + { + "mutability": "Not", + "span": 220, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 217, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 230, + "ty": 28 + } + ], + "span": 238, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 0, + "span": 235 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 235 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "align", + "source_info": { + "scope": 0, + "span": 235 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "len", + "source_info": { + "scope": 0, + "span": 235 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 100 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 101 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 102 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 103 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 104 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 105 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 106 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 7, + "span": 107 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 108 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 109 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 105 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pieces", + "source_info": { + "scope": 11, + "span": 110 + }, + "value": { + "Const": { + "const_": { + "id": 18, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 34 + }, + "span": 111, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 12, + "span": 112 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 12, + "span": 113 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 104 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 14, + "span": 105 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 15, + "span": 236 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 15, + "span": 237 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "max_len", + "source_info": { + "scope": 16, + "span": 220 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + } + ] + } + ], + "id": 17, + "name": "std::slice::from_raw_parts::precondition_check" + } + }, + "symbol_name": "_ZN4core5slice3raw14from_raw_parts18precondition_check17hf3a78f9699bce1d6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 241 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 242 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 242 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 243 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 126 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 127 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 44 + ] + } + ] + }, + "span": 127 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 128 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + 44 + ] + } + ] + }, + "span": 128 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Mul", + { + "Move": { + "local": 16, + "projection": [] + } + }, + { + "Move": { + "local": 17, + "projection": [] + } + } + ] + } + ] + }, + "span": 126 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 129 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 129 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 44 + ] + } + ] + } + } + } + ] + }, + "span": 130 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 1, + 40 + ] + } + ] + } + } + } + ] + }, + "span": 131 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 132 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 13, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 244 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 243 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 240 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 14, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 33, + "kind": "ZeroSized", + "ty": 65 + }, + "span": 239, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 240 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 12, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 240 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 12 + }, + "span": 248 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 242 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 242 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 249 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 34, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 61, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 8 + ] + ] + } + } + }, + "ty": 25 + }, + "span": 246, + "user_ty": null + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 31 + }, + "span": 245, + "user_ty": null + } + }, + "target": null, + "unwind": "Unreachable" + } + }, + "span": 247 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 1, + [ + { + "Type": 28 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 18, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 251 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 248 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 242 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 242 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 252 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 249 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 253 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 250 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "BinaryOp": [ + "Lt", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 250 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 22, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 4 + } + } + }, + "span": 250 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Copy": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 256 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 255 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "BinaryOp": [ + "Sub", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 257 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 255 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 22 + }, + "span": 259 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 254 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 254 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 254 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 260 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [] + } + } + } + ] + }, + "span": 260 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Move": { + "local": 11, + "projection": [] + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + } + ] + } + ] + }, + "span": 261 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 262 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 263 + } + ], + "terminator": { + "kind": "Return", + "span": 258 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 264, + "ty": 40 + }, + { + "mutability": "Not", + "span": 265, + "ty": 29 + }, + { + "mutability": "Not", + "span": 266, + "ty": 29 + }, + { + "mutability": "Not", + "span": 267, + "ty": 28 + }, + { + "mutability": "Not", + "span": 268, + "ty": 28 + }, + { + "mutability": "Not", + "span": 269, + "ty": 28 + }, + { + "mutability": "Not", + "span": 270, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 271, + "ty": 41 + }, + { + "mutability": "Not", + "span": 252, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 241, + "ty": 66 + }, + { + "mutability": "Not", + "span": 253, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 260, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 240, + "ty": 40 + }, + { + "mutability": "Not", + "span": 130, + "ty": 44 + }, + { + "mutability": "Not", + "span": 131, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 126, + "ty": 45 + }, + { + "mutability": "Mut", + "span": 127, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 128, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 244, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 272, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 273, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 274, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 250, + "ty": 40 + } + ], + "span": 285, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 0, + "span": 265 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dst", + "source_info": { + "scope": 0, + "span": 266 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "size", + "source_info": { + "scope": 0, + "span": 267 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "count", + "source_info": { + "scope": 0, + "span": 268 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "src_usize", + "source_info": { + "scope": 1, + "span": 269 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "dst_usize", + "source_info": { + "scope": 2, + "span": 270 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 3, + "span": 252 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "diff", + "source_info": { + "scope": 4, + "span": 253 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 104 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 105 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 104 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 105 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 275 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 9, + "span": 276 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 10, + "span": 277 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 10, + "span": 278 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 139 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 11, + "span": 140 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 12, + "span": 130 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 12, + "span": 131 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 279 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 13, + "span": 280 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 15, + "span": 281 + }, + "value": { + "Place": { + "local": 20, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 15, + "span": 282 + }, + "value": { + "Place": { + "local": 21, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 16, + "span": 283 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 284 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + } + ] + } + ], + "id": 18, + "name": "core::ub_checks::is_nonoverlapping::runtime" + } + }, + "symbol_name": "_ZN4core9ub_checks17is_nonoverlapping7runtime17h6c25e126a2602078E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 288 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 289 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 290 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 290 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 290 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 287 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 36, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 68 + }, + "span": 32, + "user_ty": null + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 35, + "kind": "ZeroSized", + "ty": 67 + }, + "span": 286, + "user_ty": 0 + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 287 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Discriminant": { + "local": 10, + "projection": [] + } + } + ] + }, + "span": 287 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 11, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ], + [ + 1, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 291 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 287 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 10, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 70 + ] + } + ] + } + } + } + ] + }, + "span": 294 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 12, + "projection": [] + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 37, + "kind": "ZeroSized", + "ty": 69 + }, + "span": 292, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 293 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 10, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 52 + ] + } + ] + } + } + } + ] + }, + "span": 296 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 297 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 290 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 290 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 21, + 0, + [ + { + "Type": 9 + }, + { + "Type": 22 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 298, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 299 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 300 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 301 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 302 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 303 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 304 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 305 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "TwoPhaseBorrow" + } + }, + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 305 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 306 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 52 + ] + } + ] + } + ] + } + ] + }, + "span": 306 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 307 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 52 + ] + }, + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 308 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 16, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 307 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 311 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 312 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 295 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 18, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 7 + ] + ], + "otherwise": 5 + } + } + }, + "span": 295 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 20 + }, + "span": 315 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 29 + ] + } + ] + }, + "span": 315 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 316 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 16, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 316 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 317 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 9 + ] + } + ] + }, + "span": 317 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 318 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 319 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 20, + "projection": [] + } + }, + { + "Move": { + "local": 21, + "projection": [] + } + }, + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 19, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 38, + "kind": "ZeroSized", + "ty": 73 + }, + "span": 313, + "user_ty": null + } + }, + "target": 6, + "unwind": "Unreachable" + } + }, + "span": 314 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 23 + }, + "span": 321 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 321 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 321 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 321 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 7 + } + }, + "span": 320 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 18 + }, + "span": 323 + }, + { + "kind": { + "Intrinsic": { + "CopyNonOverlapping": { + "count": { + "Copy": { + "local": 4, + "projection": [] + } + }, + "dst": { + "Copy": { + "local": 6, + "projection": [] + } + }, + "src": { + "Copy": { + "local": 5, + "projection": [] + } + } + } + } + }, + "span": 324 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 325 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 325 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 326 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "TwoPhaseBorrow" + } + }, + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 326 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 327 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 28 + ] + } + ] + }, + { + "Use": { + "Copy": { + "local": 4, + "projection": [] + } + } + } + ] + }, + "span": 328 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 327 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 329 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 330 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 331 + } + ], + "terminator": { + "kind": "Return", + "span": 322 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 332, + "ty": 26 + }, + { + "mutability": "Not", + "span": 333, + "ty": 23 + }, + { + "mutability": "Not", + "span": 334, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 288, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 289, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 301, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 304, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 305, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 326, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 290, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 287, + "ty": 74 + }, + { + "mutability": "Mut", + "span": 335, + "ty": 6 + }, + { + "mutability": "Not", + "span": 294, + "ty": 70 + }, + { + "mutability": "Mut", + "span": 293, + "ty": 41 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 306, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 308, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 295, + "ty": 40 + }, + { + "mutability": "Not", + "span": 314, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 315, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 316, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 317, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 318, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 337, + "ty": 76 + } + ], + "span": 357, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "s", + "source_info": { + "scope": 0, + "span": 333 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 0, + "span": 334 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 288 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "capacity", + "source_info": { + "scope": 2, + "span": 338 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 2, + "span": 339 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "capacity", + "source_info": { + "scope": 3, + "span": 340 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 3, + "span": 341 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "res", + "source_info": { + "scope": 4, + "span": 296 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "err", + "source_info": { + "scope": 5, + "span": 294 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 342 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 343 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 344 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 9, + "span": 345 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 9, + "span": 345 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 346 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 347 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dest", + "source_info": { + "scope": 11, + "span": 348 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "count", + "source_info": { + "scope": 11, + "span": 349 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 12, + "span": 350 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "dst", + "source_info": { + "scope": 12, + "span": 351 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "count", + "source_info": { + "scope": 12, + "span": 352 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 16, + "span": 353 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "new_len", + "source_info": { + "scope": 16, + "span": 354 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 355 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 18, + "span": 356 + }, + "value": { + "Place": { + "local": 24, + "projection": [] + } + } + } + ] + } + ], + "id": 20, + "name": "::to_vec::" + } + }, + "symbol_name": "_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h33b8a6e5a0a7dfc4E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 40, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 359, + "user_ty": null + } + } + } + ] + }, + "span": 359 + } + ], + "terminator": { + "kind": "Return", + "span": 358 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 360, + "ty": 17 + }, + { + "mutability": "Not", + "span": 361, + "ty": 1 + } + ], + "span": 362, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 361 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 22, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h02d1417dff5cd826E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 364 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 363 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 3 + } + } + }, + "span": 363 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 366 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 366 + } + ], + "terminator": { + "kind": "Return", + "span": 365 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 369 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 370 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 371 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 371 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 372 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 373 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 374 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 375 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 375 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 62 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Discriminant": { + "local": 11, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 13, + "projection": [] + } + }, + { + "Move": { + "local": 14, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 15, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 378 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 379 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 41, + "kind": "ZeroSized", + "ty": 78 + }, + "span": 367, + "user_ty": null + } + }, + "target": 1, + "unwind": "Unreachable" + } + }, + "span": 368 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 382 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Constant": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 9 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + }, + 29 + ] + } + ] + }, + "span": 382 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 8, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 42, + "kind": "ZeroSized", + "ty": 79 + }, + "span": 380, + "user_ty": null + } + }, + "target": 4, + "unwind": "Unreachable" + } + }, + "span": 381 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 384 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 383 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 387 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 9 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 44, + "kind": "ZeroSized", + "ty": 80 + }, + "span": 385, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 386 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 388, + "ty": 58 + }, + { + "mutability": "Not", + "span": 389, + "ty": 63 + }, + { + "mutability": "Not", + "span": 364, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 370, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 371, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 374, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 375, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 363, + "ty": 40 + }, + { + "mutability": "Not", + "span": 381, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 382, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 62 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + } + ], + "span": 394, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 389 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "src", + "source_info": { + "scope": 1, + "span": 390 + }, + "value": { + "Const": { + "const_": { + "id": 43, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 9 + ] + ] + } + } + }, + "ty": 27 + }, + "span": 391, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 392 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 393 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 7, + "span": 208 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + } + ] + } + ], + "id": 23, + "name": "std::alloc::alloc" + } + }, + "symbol_name": "_ZN5alloc5alloc5alloc17h0dca39f7982a9f7aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 396 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 396 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 372 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 397 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 395 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 9 + }, + "span": 399 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 398 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 401 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 402 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 403 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 403 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 404 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 62 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 19, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Discriminant": { + "local": 20, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 24, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 21, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 23 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 378 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 18, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 405 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 406 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 25, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 9 + ] + ], + "otherwise": 7 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 10 + }, + "span": 409 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [] + } + } + } + ] + }, + "span": 409 + }, + { + "kind": { + "StorageLive": 34 + }, + "span": 410 + }, + { + "kind": { + "Assign": [ + { + "local": 34, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 410 + }, + { + "kind": { + "StorageDead": 34 + }, + "span": 411 + }, + { + "kind": { + "StorageLive": 35 + }, + "span": 412 + }, + { + "kind": { + "StorageLive": 36 + }, + "span": 413 + }, + { + "kind": { + "Assign": [ + { + "local": 36, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 10, + "projection": [] + } + ] + } + ] + }, + "span": 413 + }, + { + "kind": { + "StorageLive": 37 + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 37, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 1, + 62 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "StorageLive": 39 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 40 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 41 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 42 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 38 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 38, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 37, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 39, + "projection": [] + }, + { + "Discriminant": { + "local": 38, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 40, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 41, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 42, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 40, + "projection": [] + } + }, + { + "Move": { + "local": 41, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 42, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 35, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 39, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 38 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 42 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 41 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 40 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 39 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 37 + }, + "span": 378 + }, + { + "kind": { + "StorageDead": 36 + }, + "span": 414 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 35, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 45, + "kind": "ZeroSized", + "ty": 82 + }, + "span": 407, + "user_ty": null + } + }, + "target": 13, + "unwind": "Unreachable" + } + }, + "span": 408 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 46, + "kind": "ZeroSized", + "ty": 83 + }, + "span": 415, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 416 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 11 + }, + "span": 418 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 419 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 420 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [] + } + } + } + ] + }, + "span": 421 + }, + { + "kind": { + "StorageLive": 44 + }, + "span": 156 + }, + { + "kind": { + "Assign": [ + { + "local": 44, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 157 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 44, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 14 + ] + ], + "otherwise": 15 + } + } + }, + "span": 417 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 422 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 27 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 27, + "projection": [] + } + } + ], + "destination": { + "local": 26, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 8, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 27 + }, + "span": 426 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 28, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 429 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 430 + }, + { + "kind": { + "StorageLive": 30 + }, + "span": 431 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [] + } + } + } + ] + }, + "span": 310 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 432 + }, + { + "kind": { + "StorageDead": 30 + }, + "span": 433 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 434 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 10 + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 28, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 429 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 430 + }, + { + "kind": { + "StorageLive": 30 + }, + "span": 431 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [] + } + } + } + ] + }, + "span": 310 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 17, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 432 + }, + { + "kind": { + "StorageDead": 30 + }, + "span": 433 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 434 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 25, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 12 + ] + ], + "otherwise": 10 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 32 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 32, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 17, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 32, + "projection": [] + } + } + ], + "destination": { + "local": 31, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 11, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 32 + }, + "span": 426 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 12 + } + }, + "span": 435 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 33, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 29, + "projection": [] + } + }, + 75 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 85 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 33, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 33 + }, + "span": 434 + }, + { + "kind": { + "StorageDead": 29 + }, + "span": 437 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 438 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 86 + }, + { + "Type": 87 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 439 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 436 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 436 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 35 + }, + "span": 441 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 442 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 440 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 44 + }, + "span": 417 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 48, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 88 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 443 + }, + { + "kind": { + "StorageLive": 49 + }, + "span": 444 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 49, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 89 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 445 + }, + { + "kind": { + "StorageDead": 49 + }, + "span": 444 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 446 + }, + { + "kind": { + "StorageLive": 50 + }, + "span": 418 + }, + { + "kind": { + "StorageDead": 50 + }, + "span": 418 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 447 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 50, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 90 + }, + "span": 32, + "user_ty": null + } + } + } + ] + }, + "span": 448 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 449 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 450 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 422 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 44 + }, + "span": 417 + }, + { + "kind": { + "StorageLive": 43 + }, + "span": 451 + }, + { + "kind": { + "StorageLive": 48 + }, + "span": 452 + }, + { + "kind": { + "StorageLive": 45 + }, + "span": 400 + }, + { + "kind": { + "Assign": [ + { + "local": 45, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 45, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 18 + ] + ], + "otherwise": 16 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 47 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 47, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 47, + "projection": [] + } + } + ], + "destination": { + "local": 46, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 17, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 47 + }, + "span": 426 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 18 + } + }, + "span": 435 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 45 + }, + "span": 453 + }, + { + "kind": { + "Assign": [ + { + "local": 48, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 43, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 48, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 48 + }, + "span": 452 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 1, + [ + { + "Type": 72 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 43, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 454 + }, + { + "kind": { + "StorageDead": 43 + }, + "span": 455 + }, + { + "kind": { + "StorageLive": 49 + }, + "span": 444 + }, + { + "kind": { + "Assign": [ + { + "local": 49, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 13, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 456 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 72 + }, + { + "Type": 87 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 49, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 457 + }, + { + "kind": { + "StorageDead": 49 + }, + "span": 444 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 446 + }, + { + "kind": { + "StorageLive": 50 + }, + "span": 418 + }, + { + "kind": { + "Assign": [ + { + "local": 50, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 12, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 458 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 26, + 0, + [ + { + "Type": 91 + }, + { + "Type": 72 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 50, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 459 + }, + { + "kind": { + "StorageDead": 50 + }, + "span": 418 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 447 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 11, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 460 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 449 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 461 + }, + { + "kind": { + "StorageLive": 53 + }, + "span": 461 + }, + { + "kind": { + "StorageLive": 51 + }, + "span": 430 + }, + { + "kind": { + "StorageLive": 52 + }, + "span": 431 + }, + { + "kind": { + "Assign": [ + { + "local": 53, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 52, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 53, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "Assign": [ + { + "local": 51, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 52, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 432 + }, + { + "kind": { + "StorageDead": 52 + }, + "span": 433 + }, + { + "kind": { + "StorageLive": 57 + }, + "span": 434 + }, + { + "kind": { + "StorageLive": 54 + }, + "span": 400 + }, + { + "kind": { + "Assign": [ + { + "local": 54, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 54, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 21 + ] + ], + "otherwise": 19 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 56 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 56, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 53, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 56, + "projection": [] + } + } + ], + "destination": { + "local": 55, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 20, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 56 + }, + "span": 426 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 21 + } + }, + "span": 435 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 54 + }, + "span": 453 + }, + { + "kind": { + "Assign": [ + { + "local": 57, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 51, + "projection": [] + } + }, + 75 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 85 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 57, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 57 + }, + "span": 434 + }, + { + "kind": { + "StorageDead": 51 + }, + "span": 437 + }, + { + "kind": { + "StorageDead": 53 + }, + "span": 461 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 86 + }, + { + "Type": 87 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 462 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 463 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 450 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 450 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 464, + "ty": 90 + }, + { + "mutability": "Not", + "span": 465, + "ty": 92 + }, + { + "mutability": "Not", + "span": 466, + "ty": 63 + }, + { + "mutability": "Not", + "span": 467, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 468, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 396, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 401, + "ty": 86 + }, + { + "mutability": "Mut", + "span": 402, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 403, + "ty": 81 + }, + { + "mutability": "Not", + "span": 399, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 409, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 418, + "ty": 93 + }, + { + "mutability": "Mut", + "span": 419, + "ty": 89 + }, + { + "mutability": "Mut", + "span": 420, + "ty": 88 + }, + { + "mutability": "Mut", + "span": 421, + "ty": 58 + }, + { + "mutability": "Not", + "span": 460, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 461, + "ty": 86 + }, + { + "mutability": "Mut", + "span": 469, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 404, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 62 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 40 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 430, + "ty": 94 + }, + { + "mutability": "Mut", + "span": 431, + "ty": 58 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 410, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 412, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 413, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 62 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 451, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 156, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 40 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 27 + }, + { + "mutability": "Not", + "span": 456, + "ty": 72 + }, + { + "mutability": "Not", + "span": 458, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 430, + "ty": 94 + }, + { + "mutability": "Mut", + "span": 431, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 40 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 75 + } + ], + "span": 492, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 465 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 466 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "zeroed", + "source_info": { + "scope": 0, + "span": 467 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 470 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "raw_ptr", + "source_info": { + "scope": 2, + "span": 399 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 471 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "residual", + "source_info": { + "scope": 4, + "span": 472 + }, + "value": { + "Const": { + "const_": { + "id": 51, + "kind": "ZeroSized", + "ty": 91 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "val", + "source_info": { + "scope": 6, + "span": 460 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 392 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 9, + "span": 473 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 10, + "span": 393 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 11, + "span": 208 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 12, + "span": 474 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 13, + "span": 475 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 16, + "span": 476 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 16, + "span": 477 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 478, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 346 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 18, + "span": 479 + }, + "value": { + "Place": { + "local": 30, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 18, + "span": 480 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 478, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 19, + "span": 481 + }, + "value": { + "Place": { + "local": 30, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 19, + "span": 482 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 478, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 20, + "span": 475 + }, + "value": { + "Place": { + "local": 29, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "layout", + "source_info": { + "scope": 23, + "span": 483 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 392 + }, + "value": { + "Place": { + "local": 34, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 25, + "span": 393 + }, + "value": { + "Place": { + "local": 36, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 26, + "span": 208 + }, + "value": { + "Place": { + "local": 37, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 27, + "span": 484 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 28, + "span": 164 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 29, + "span": 165 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 30, + "span": 166 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 31, + "span": 167 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 32, + "span": 475 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 35, + "span": 485 + }, + "value": { + "Place": { + "local": 13, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "err", + "source_info": { + "scope": 35, + "span": 486 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 36, + "span": 456 + }, + "value": { + "Place": { + "local": 49, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 37, + "span": 487 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 38, + "span": 458 + }, + "value": { + "Place": { + "local": 50, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "e", + "source_info": { + "scope": 39, + "span": 488 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 40, + "span": 476 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 40, + "span": 477 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 41, + "span": 346 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 42, + "span": 479 + }, + "value": { + "Place": { + "local": 52, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 42, + "span": 480 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 43, + "span": 481 + }, + "value": { + "Place": { + "local": 52, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 43, + "span": 482 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 44, + "span": 475 + }, + "value": { + "Place": { + "local": 51, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "residual", + "source_info": { + "scope": 47, + "span": 489 + }, + "value": { + "Const": { + "const_": { + "id": 51, + "kind": "ZeroSized", + "ty": 91 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "e", + "source_info": { + "scope": 48, + "span": 490 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "t", + "source_info": { + "scope": 49, + "span": 491 + }, + "value": { + "Const": { + "const_": { + "id": 52, + "kind": "ZeroSized", + "ty": 87 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 24, + "name": "std::alloc::Global::alloc_impl" + } + }, + "symbol_name": "_ZN5alloc5alloc6Global10alloc_impl17h3e8e7b3e0f598119E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 493, + "user_ty": null + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 3 + } + } + }, + "span": 493 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 495 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 95 + ] + }, + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 495 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 4 + } + } + }, + "span": 494 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 497 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 3 + } + }, + "span": 496 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 0, + [ + { + "Type": 96 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 499 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 498 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 497 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 319 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 501 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 9 + ] + } + ] + }, + "span": 502 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 503 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 95 + ] + }, + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 503 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 500 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 9, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 7 + ] + ], + "otherwise": 6 + } + } + }, + "span": 500 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 504 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 10, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 30, + "kind": "ZeroSized", + "ty": 61 + }, + "span": 505, + "user_ty": null + } + }, + "target": 7, + "unwind": "Unreachable" + } + }, + "span": 506 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 507 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "MulUnchecked", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 508 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 509 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 509 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 195 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 196 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 15, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 11, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 197 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 198 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 510 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 511 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 511 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 1, + 77 + ] + } + ] + } + } + } + ] + }, + "span": 511 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 512 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 513 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 15, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 513 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 13, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 514 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 515 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 512 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 516 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Copy": { + "local": 12, + "projection": [] + } + }, + { + "Copy": { + "local": 7, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 510 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 19, + 1, + [ + { + "Type": 96 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 517 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 518 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 498 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 519, + "ty": 97 + }, + { + "mutability": "Not", + "span": 520, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 495, + "ty": 28 + }, + { + "mutability": "Not", + "span": 521, + "ty": 28 + }, + { + "mutability": "Not", + "span": 522, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 501, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 503, + "ty": 28 + }, + { + "mutability": "Not", + "span": 523, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 510, + "ty": 96 + }, + { + "mutability": "Mut", + "span": 500, + "ty": 40 + }, + { + "mutability": "Not", + "span": 506, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 195, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 524, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 513, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 511, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 511, + "ty": 77 + } + ], + "span": 532, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 520 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "align", + "source_info": { + "scope": 1, + "span": 521 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 2, + "span": 522 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 3, + "span": 523 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 525 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "rhs", + "source_info": { + "scope": 6, + "span": 526 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "size", + "source_info": { + "scope": 9, + "span": 211 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "align", + "source_info": { + "scope": 9, + "span": 212 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 10, + "span": 213 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 11, + "span": 527 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 11, + "span": 527 + }, + "value": { + "Place": { + "local": 16, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 12, + "span": 528 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 13, + "span": 346 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 14, + "span": 529 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 14, + "span": 529 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "unique", + "source_info": { + "scope": 15, + "span": 530 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "unique", + "source_info": { + "scope": 15, + "span": 530 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 16, + "span": 531 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 16, + "span": 531 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 27, + "name": "alloc::raw_vec::RawVec::::current_memory" + } + }, + "symbol_name": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hba8a41dea17e13ccE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 533, + "user_ty": null + } + }, + "targets": { + "branches": [ + [ + 0, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 533 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 534 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 535 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 536 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 536 + }, + { + "kind": { + "StorageLive": 25 + }, + "span": 537 + }, + { + "kind": { + "StorageLive": 26 + }, + "span": 538 + }, + { + "kind": { + "StorageLive": 27 + }, + "span": 538 + }, + { + "kind": { + "StorageLive": 28 + }, + "span": 539 + }, + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 319 + }, + { + "kind": { + "Assign": [ + { + "local": 27, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 28, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 405 + }, + { + "kind": { + "StorageDead": 28 + }, + "span": 540 + }, + { + "kind": { + "StorageLive": 32 + }, + "span": 541 + }, + { + "kind": { + "StorageLive": 29 + }, + "span": 400 + }, + { + "kind": { + "Assign": [ + { + "local": 29, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 29, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 21 + ] + ], + "otherwise": 19 + } + } + }, + "span": 400 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 544 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 545 + }, + { + "kind": { + "StorageLive": 33 + }, + "span": 546 + }, + { + "kind": { + "Assign": [ + { + "local": 33, + "projection": [] + }, + { + "NullaryOp": [ + "SizeOf", + 9 + ] + } + ] + }, + "span": 502 + }, + { + "kind": { + "StorageLive": 34 + }, + "span": 547 + }, + { + "kind": { + "StorageLive": 35 + }, + "span": 548 + }, + { + "kind": { + "Assign": [ + { + "local": 35, + "projection": [] + }, + { + "NullaryOp": [ + "AlignOf", + 9 + ] + } + ] + }, + "span": 319 + }, + { + "kind": { + "Assign": [ + { + "local": 34, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 35, + "projection": [] + } + }, + 62 + ] + } + ] + }, + "span": 196 + }, + { + "kind": { + "StorageDead": 35 + }, + "span": 549 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 33, + "projection": [] + } + }, + { + "Move": { + "local": 34, + "projection": [] + } + }, + { + "Copy": { + "local": 1, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 54, + "kind": "ZeroSized", + "ty": 98 + }, + "span": 542, + "user_ty": null + } + }, + "target": 22, + "unwind": { + "Cleanup": 18 + } + } + }, + "span": 543 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 545 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 1, + [ + { + "Type": 52 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 55, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 70 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 550 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 551 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 15 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 7, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 63 + ] + } + ] + } + } + } + ] + }, + "span": 553 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [] + } + } + } + ] + }, + "span": 554 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 551 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 555 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 556 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 6, + "projection": [] + } + ] + } + ] + }, + "span": 556 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 9, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 372 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 557 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 558 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 559 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [] + } + } + ] + }, + "span": 560 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 13, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ], + [ + 1, + 7 + ] + ], + "otherwise": 4 + } + } + }, + "span": 552 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 15 + }, + "span": 563 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 563 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Copy": { + "local": 9, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 56, + "kind": "ZeroSized", + "ty": 99 + }, + "span": 561, + "user_ty": null + } + }, + "target": 10, + "unwind": { + "Cleanup": 18 + } + } + }, + "span": 562 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 14 + }, + "span": 566 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 566 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 14, + "projection": [] + } + }, + { + "Copy": { + "local": 9, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 57, + "kind": "ZeroSized", + "ty": 100 + }, + "span": 564, + "user_ty": null + } + }, + "target": 9, + "unwind": { + "Cleanup": 18 + } + } + }, + "span": 565 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 14 + }, + "span": 567 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 11 + } + }, + "span": 567 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 15 + }, + "span": 568 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 11 + } + }, + "span": 568 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Discriminant": { + "local": 12, + "projection": [] + } + } + ] + }, + "span": 570 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 16, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 13 + ], + [ + 1, + 12 + ] + ], + "otherwise": 4 + } + } + }, + "span": 569 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 18 + }, + "span": 571 + }, + { + "kind": { + "StorageLive": 19 + }, + "span": 572 + }, + { + "kind": { + "Assign": [ + { + "local": 19, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 29, + 1, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 9, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 572 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 30, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 19, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 573 + }, + { + "kind": { + "StorageDead": 19 + }, + "span": 574 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 1, + [ + { + "Type": 52 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 18, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 575 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 576 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 577 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 15 + } + }, + "span": 32 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 12, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 86 + ] + } + ] + } + } + } + ] + }, + "span": 579 + }, + { + "kind": { + "StorageLive": 20 + }, + "span": 580 + }, + { + "kind": { + "StorageLive": 21 + }, + "span": 581 + }, + { + "kind": { + "StorageLive": 22 + }, + "span": 582 + }, + { + "kind": { + "StorageLive": 37 + }, + "span": 583 + }, + { + "kind": { + "StorageLive": 36 + }, + "span": 513 + }, + { + "kind": { + "Assign": [ + { + "local": 37, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 17, + "projection": [ + { + "Field": [ + 0, + 75 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 36, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 37, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 513 + }, + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 36, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 514 + }, + { + "kind": { + "StorageDead": 36 + }, + "span": 515 + }, + { + "kind": { + "StorageDead": 37 + }, + "span": 583 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 31, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 22, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 584 + }, + { + "kind": { + "StorageDead": 22 + }, + "span": 585 + }, + { + "kind": { + "StorageLive": 23 + }, + "span": 586 + }, + { + "kind": { + "Assign": [ + { + "local": 23, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 32, + 0, + [], + null, + null + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 587 + }, + { + "kind": { + "StorageLive": 24 + }, + "span": 588 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 588 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 33, + 0, + [ + { + "Type": 9 + }, + { + "Type": 22 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 21, + "projection": [] + } + }, + { + "Move": { + "local": 23, + "projection": [] + } + }, + { + "Move": { + "local": 24, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 580 + }, + { + "kind": { + "StorageDead": 24 + }, + "span": 589 + }, + { + "kind": { + "StorageDead": 23 + }, + "span": 589 + }, + { + "kind": { + "StorageDead": 21 + }, + "span": 589 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 52 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 20, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 590 + }, + { + "kind": { + "StorageDead": 20 + }, + "span": 591 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 577 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 577 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 578 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 16 + } + }, + "span": 592 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 577 + } + ], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 3, + "projection": [] + }, + "target": 16, + "unwind": "Continue" + } + }, + "span": 592 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 593 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 594 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 3, + "projection": [] + }, + "target": 17, + "unwind": "Terminate" + } + }, + "span": 592 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 31 + }, + "span": 425 + }, + { + "kind": { + "Assign": [ + { + "local": 31, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 27, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 425 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 31, + "projection": [] + } + } + ], + "destination": { + "local": 30, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 47, + "kind": "ZeroSized", + "ty": 84 + }, + "span": 423, + "user_ty": null + } + }, + "target": 20, + "unwind": "Unreachable" + } + }, + "span": 424 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 31 + }, + "span": 426 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 21 + } + }, + "span": 435 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 29 + }, + "span": 453 + }, + { + "kind": { + "Assign": [ + { + "local": 32, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 27, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 427 + }, + { + "kind": { + "Assign": [ + { + "local": 26, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 25, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Copy": { + "local": 32, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 428 + }, + { + "kind": { + "StorageDead": 32 + }, + "span": 541 + }, + { + "kind": { + "StorageDead": 27 + }, + "span": 538 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 31, + 0, + [ + { + "Type": 9 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 26, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 595 + }, + { + "kind": { + "StorageDead": 26 + }, + "span": 596 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 33, + 0, + [ + { + "Type": 9 + }, + { + "Type": 22 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 25, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 58, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 95 + }, + "span": 597, + "user_ty": null + } + }, + { + "Copy": { + "local": 5, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 598 + }, + { + "kind": { + "StorageDead": 25 + }, + "span": 599 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 600 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 16, + 0, + [ + { + "Type": 52 + }, + { + "Type": 70 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 601 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 602 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 14 + } + }, + "span": 578 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 34 + }, + "span": 604 + }, + { + "kind": { + "StorageDead": 33 + }, + "span": 604 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Discriminant": { + "local": 7, + "projection": [] + } + } + ] + }, + "span": 545 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 8, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 6 + ], + [ + 1, + 5 + ] + ], + "otherwise": 4 + } + } + }, + "span": 603 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 605, + "ty": 74 + }, + { + "mutability": "Not", + "span": 606, + "ty": 28 + }, + { + "mutability": "Not", + "span": 607, + "ty": 68 + }, + { + "mutability": "Not", + "span": 608, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 535, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 536, + "ty": 22 + }, + { + "mutability": "Not", + "span": 544, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 545, + "ty": 60 + }, + { + "mutability": "Mut", + "span": 609, + "ty": 6 + }, + { + "mutability": "Not", + "span": 553, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 555, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 556, + "ty": 81 + }, + { + "mutability": "Not", + "span": 559, + "ty": 90 + }, + { + "mutability": "Mut", + "span": 610, + "ty": 6 + }, + { + "mutability": "Mut", + "span": 566, + "ty": 92 + }, + { + "mutability": "Mut", + "span": 563, + "ty": 92 + }, + { + "mutability": "Mut", + "span": 611, + "ty": 6 + }, + { + "mutability": "Not", + "span": 579, + "ty": 86 + }, + { + "mutability": "Mut", + "span": 571, + "ty": 70 + }, + { + "mutability": "Mut", + "span": 572, + "ty": 101 + }, + { + "mutability": "Mut", + "span": 580, + "ty": 52 + }, + { + "mutability": "Mut", + "span": 581, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 582, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 586, + "ty": 95 + }, + { + "mutability": "Mut", + "span": 588, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 537, + "ty": 71 + }, + { + "mutability": "Mut", + "span": 538, + "ty": 72 + }, + { + "mutability": "Not", + "span": 612, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 539, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 400, + "ty": 40 + }, + { + "mutability": "Not", + "span": 424, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 425, + "ty": 39 + }, + { + "mutability": "Mut", + "span": 427, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 546, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 547, + "ty": 62 + }, + { + "mutability": "Mut", + "span": 548, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 513, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 75 + } + ], + "span": 594, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "capacity", + "source_info": { + "scope": 0, + "span": 606 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "init", + "source_info": { + "scope": 0, + "span": 607 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 0, + "span": 608 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 1, + "span": 544 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 2, + "span": 553 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "err", + "source_info": { + "scope": 3, + "span": 613 + }, + "value": { + "Const": { + "const_": { + "id": 59, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 128, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 70 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 4, + "span": 559 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 5, + "span": 614 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 6, + "span": 579 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "alloc", + "source_info": { + "scope": 7, + "span": 615 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 10, + "span": 612 + }, + "value": { + "Place": { + "local": 27, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "addr", + "source_info": { + "scope": 13, + "span": 474 + }, + "value": { + "Place": { + "local": 28, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 14, + "span": 475 + }, + "value": { + "Place": { + "local": 27, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "n", + "source_info": { + "scope": 17, + "span": 616 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "align", + "source_info": { + "scope": 21, + "span": 213 + }, + "value": { + "Place": { + "local": 35, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 22, + "span": 529 + }, + "value": { + "Const": { + "const_": { + "id": 60, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 101 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "kind", + "source_info": { + "scope": 23, + "span": 617 + }, + "value": { + "Const": { + "const_": { + "id": 60, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 101 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 392 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "alloc_size", + "source_info": { + "scope": 25, + "span": 618 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 26, + "span": 529 + }, + "value": { + "Const": { + "const_": { + "id": 61, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 101 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "kind", + "source_info": { + "scope": 27, + "span": 617 + }, + "value": { + "Const": { + "const_": { + "id": 61, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 101 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 28, + "span": 529 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "kind", + "source_info": { + "scope": 29, + "span": 617 + }, + "value": { + "Place": { + "local": 19, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 30, + "span": 528 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 31, + "span": 346 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "pointer", + "source_info": { + "scope": 32, + "span": 619 + }, + "value": { + "Place": { + "local": 22, + "projection": [] + } + } + } + ] + } + ], + "id": 28, + "name": "alloc::raw_vec::RawVec::::try_allocate_in" + } + }, + "symbol_name": "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17hde8132f4f12532dbE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 3, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 621 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 621 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 0, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 372 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 622 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 620 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 6 + }, + "span": 625 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Move": { + "local": 8, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 626 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 627 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 627 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 628 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [] + } + ] + } + ] + }, + "span": 628 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 629 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 630 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 631 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 7, + "projection": [] + } + ] + } + ] + }, + "span": 631 + }, + { + "kind": { + "StorageLive": 12 + }, + "span": 376 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [ + { + "Field": [ + 1, + 62 + ] + } + ] + } + } + } + ] + }, + "span": 376 + }, + { + "kind": { + "StorageLive": 14 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 377 + }, + { + "kind": { + "StorageLive": 13 + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 12, + "projection": [ + { + "Field": [ + 0, + 59 + ] + } + ] + } + } + } + ] + }, + "span": 176 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Discriminant": { + "local": 13, + "projection": [] + } + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "BinaryOp": [ + "Ge", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 26, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "BinaryOp": [ + "Le", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 27, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 128 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 44 + }, + "span": 177, + "user_ty": null + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 15, + "projection": [] + } + }, + { + "Move": { + "local": 16, + "projection": [] + } + } + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "Intrinsic": { + "Assume": { + "Move": { + "local": 17, + "projection": [] + } + } + } + }, + "span": 177 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Copy": { + "local": 14, + "projection": [] + } + }, + 28 + ] + } + ] + }, + "span": 177 + }, + { + "kind": { + "StorageDead": 13 + }, + "span": 178 + }, + { + "kind": { + "StorageDead": 17 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 377 + }, + { + "kind": { + "StorageDead": 12 + }, + "span": 378 + }, + { + "kind": { + "StorageDead": 11 + }, + "span": 632 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 62, + "kind": "ZeroSized", + "ty": 102 + }, + "span": 623, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 624 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 633 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 635 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 636 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 636 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 2 + } + }, + "span": 634 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 637, + "ty": 1 + }, + { + "mutability": "Not", + "span": 638, + "ty": 92 + }, + { + "mutability": "Not", + "span": 639, + "ty": 72 + }, + { + "mutability": "Not", + "span": 640, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 641, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 621, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 625, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 627, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 628, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 630, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 631, + "ty": 81 + }, + { + "mutability": "Mut", + "span": 376, + "ty": 62 + }, + { + "mutability": "Not", + "span": 176, + "ty": 59 + }, + { + "mutability": "Mut", + "span": 176, + "ty": 44 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 177, + "ty": 40 + } + ], + "span": 644, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 638 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 0, + "span": 639 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 640 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 392 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 346 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 3, + "span": 642 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 3, + "span": 643 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 392 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 393 + }, + "value": { + "Place": { + "local": 11, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 208 + }, + "value": { + "Place": { + "local": 12, + "projection": [] + } + } + } + ] + } + ], + "id": 34, + "name": "::deallocate" + } + }, + "symbol_name": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h92716973ef61186eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 64, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 1 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 646, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 63, + "kind": "ZeroSized", + "ty": 103 + }, + "span": 645, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 647 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 648 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 649, + "ty": 90 + }, + { + "mutability": "Not", + "span": 650, + "ty": 92 + }, + { + "mutability": "Not", + "span": 651, + "ty": 63 + } + ], + "span": 652, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 650 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 651 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 35, + "name": "::allocate_zeroed" + } + }, + "symbol_name": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$15allocate_zeroed17hd1378b6fec98ecddE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 654, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 63, + "kind": "ZeroSized", + "ty": 103 + }, + "span": 653, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 655 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 656 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 657, + "ty": 90 + }, + { + "mutability": "Not", + "span": 658, + "ty": 92 + }, + { + "mutability": "Not", + "span": 659, + "ty": 63 + } + ], + "span": 660, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 658 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "layout", + "source_info": { + "scope": 0, + "span": 659 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 36, + "name": "::allocate" + } + }, + "symbol_name": "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hc5b4e4962fb0f40dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 663 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 664 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 306 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 52 + ] + } + ] + } + ] + } + ] + }, + "span": 306 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 307 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 52 + ] + }, + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 308 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 7, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 58 + ] + } + ] + }, + "span": 310 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 626 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 307 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 311 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 665 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 665 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Mut" + ] + }, + [ + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 432 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 666 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 666 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 65, + "kind": "ZeroSized", + "ty": 104 + }, + "span": 661, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 662 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 668 + } + ], + "terminator": { + "kind": "Return", + "span": 667 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 669, + "ty": 1 + }, + { + "mutability": "Not", + "span": 670, + "ty": 54 + }, + { + "mutability": "Mut", + "span": 663, + "ty": 94 + }, + { + "mutability": "Mut", + "span": 664, + "ty": 58 + }, + { + "mutability": "Mut", + "span": 665, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 306, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 309, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 308, + "ty": 72 + } + ], + "span": 671, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 670 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 343 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 344 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 3, + "span": 345 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 3, + "span": 345 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 346 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 5, + "span": 479 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 5, + "span": 480 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 6, + "span": 481 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 6, + "span": 482 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + } + ] + } + ], + "id": 37, + "name": " as std::ops::Drop>::drop" + } + }, + "symbol_name": "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha2b06c17550c4594E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 672 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 673 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 673 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 674 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 674 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Ne", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 672 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 672 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 676 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 676 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 53, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 40 + }, + "span": 677, + "user_ty": null + } + } + } + ] + }, + "span": 677 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 678 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 675 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 676 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 676 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 678 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 681 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 681 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 66, + "kind": "ZeroSized", + "ty": 105 + }, + "span": 679, + "user_ty": null + } + }, + "target": 5, + "unwind": "Unreachable" + } + }, + "span": 680 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 682 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 682 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 67, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 683, + "user_ty": null + } + } + ] + } + ] + }, + "span": 684 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 683 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 675 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 675 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 687 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 686 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 688 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 302 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 688 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 689 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 2, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 302 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 27 + ] + } + ] + }, + "span": 689 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 68, + "kind": "ZeroSized", + "ty": 106 + }, + "span": 685, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 686 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 690, + "ty": 40 + }, + { + "mutability": "Not", + "span": 691, + "ty": 23 + }, + { + "mutability": "Not", + "span": 692, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 672, + "ty": 40 + }, + { + "mutability": "Mut", + "span": 673, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 674, + "ty": 28 + }, + { + "mutability": "Not", + "span": 693, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 686, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 688, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 689, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 681, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 336, + "ty": 75 + } + ], + "span": 695, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 691 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 692 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 693 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "val", + "source_info": { + "scope": 2, + "span": 694 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 342 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 342 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 38, + "name": "<[u8] as core::slice::cmp::SlicePartialEq>::equal" + } + }, + "symbol_name": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h812ed04340e8bc65E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 697 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 698 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 698 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 69, + "kind": "ZeroSized", + "ty": 107 + }, + "span": 696, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 697 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 700 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [] + } + } + ] + }, + "span": 697 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 2 + ], + [ + 0, + 4 + ] + ], + "otherwise": 5 + } + } + }, + "span": 699 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 96 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 703 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 96 + ] + }, + { + "Field": [ + 1, + 63 + ] + } + ] + } + } + } + ] + }, + "span": 704 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 705 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 2, + 22 + ] + } + ] + } + ] + } + ] + }, + "span": 705 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 70, + "kind": "ZeroSized", + "ty": 108 + }, + "span": 701, + "user_ty": null + } + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 702 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 707 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 706 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 2 + }, + "span": 709 + } + ], + "terminator": { + "kind": "Return", + "span": 708 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 710 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 711, + "ty": 1 + }, + { + "mutability": "Not", + "span": 712, + "ty": 57 + }, + { + "mutability": "Mut", + "span": 697, + "ty": 97 + }, + { + "mutability": "Mut", + "span": 698, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 699, + "ty": 6 + }, + { + "mutability": "Not", + "span": 703, + "ty": 72 + }, + { + "mutability": "Not", + "span": 704, + "ty": 63 + }, + { + "mutability": "Mut", + "span": 705, + "ty": 92 + } + ], + "span": 710, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 712 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 1, + "span": 703 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "layout", + "source_info": { + "scope": 1, + "span": 704 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + } + ] + } + ], + "id": 39, + "name": " as std::ops::Drop>::drop" + } + }, + "symbol_name": "_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h9f21d22221a217aaE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 14 + }, + "span": 714 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 715 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 715 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + } + ] + } + ] + } + ] + }, + "span": 715 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 716 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 717 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + }, + { + "Field": [ + 0, + 52 + ] + } + ] + } + ] + } + ] + }, + "span": 717 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 718 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + }, + { + "Field": [ + 0, + 52 + ] + }, + { + "Field": [ + 0, + 71 + ] + }, + { + "Field": [ + 0, + 72 + ] + } + ] + } + } + } + ] + }, + "span": 308 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 10, + "projection": [ + { + "Field": [ + 0, + 27 + ] + } + ] + } + } + } + ] + }, + "span": 309 + }, + { + "kind": { + "StorageDead": 10 + }, + "span": 718 + }, + { + "kind": { + "StorageDead": 9 + }, + "span": 719 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 720 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + }, + { + "Field": [ + 1, + 28 + ] + } + ] + } + } + } + ] + }, + "span": 720 + }, + { + "kind": { + "StorageLive": 11 + }, + "span": 713 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "NullaryOp": [ + "UbChecks", + 40 + ] + } + ] + }, + "span": 187 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 11, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 1 + } + } + }, + "span": 713 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 13 + }, + "span": 723 + }, + { + "kind": { + "Assign": [ + { + "local": 13, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 39 + ] + } + ] + }, + "span": 723 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 13, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + } + ], + "destination": { + "local": 12, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 71, + "kind": "ZeroSized", + "ty": 109 + }, + "span": 721, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 722 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 13 + }, + "span": 725 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 3 + } + }, + "span": 724 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 11 + }, + "span": 728 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Aggregate": [ + { + "RawPtr": [ + 85, + "Not" + ] + }, + [ + { + "Copy": { + "local": 7, + "projection": [] + } + }, + { + "Copy": { + "local": 8, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 729 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 730 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 730 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 14, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 715 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 731 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 5, + "projection": [] + } + }, + 25 + ] + } + ] + }, + "span": 732 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 733 + }, + { + "kind": { + "StorageDead": 14 + }, + "span": 714 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 734 + }, + { + "kind": { + "StorageLive": 16 + }, + "span": 735 + }, + { + "kind": { + "StorageLive": 18 + }, + "span": 735 + }, + { + "kind": { + "StorageLive": 15 + }, + "span": 736 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + 23 + ] + } + ] + }, + "span": 47 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 16, + "projection": [] + } + ] + } + ] + }, + "span": 736 + }, + { + "kind": { + "StorageLive": 17 + }, + "span": 737 + }, + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + 23 + ] + } + ] + }, + "span": 47 + }, + { + "kind": { + "Assign": [ + { + "local": 17, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 18, + "projection": [] + } + ] + } + ] + }, + "span": 737 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 16, + "projection": [] + } + }, + { + "Copy": { + "local": 18, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 72, + "kind": "ZeroSized", + "ty": 110 + }, + "span": 726, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 727 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 17 + }, + "span": 739 + }, + { + "kind": { + "StorageDead": 15 + }, + "span": 739 + }, + { + "kind": { + "StorageDead": 18 + }, + "span": 735 + }, + { + "kind": { + "StorageDead": 16 + }, + "span": 735 + } + ], + "terminator": { + "kind": "Return", + "span": 738 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 740, + "ty": 40 + }, + { + "mutability": "Not", + "span": 741, + "ty": 111 + }, + { + "mutability": "Not", + "span": 742, + "ty": 112 + }, + { + "mutability": "Mut", + "span": 742, + "ty": 25 + }, + { + "mutability": "Not", + "span": 743, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 715, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 715, + "ty": 113 + }, + { + "mutability": "Mut", + "span": 716, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 720, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 717, + "ty": 76 + }, + { + "mutability": "Mut", + "span": 308, + "ty": 72 + }, + { + "mutability": "Mut", + "span": 713, + "ty": 40 + }, + { + "mutability": "Not", + "span": 722, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 723, + "ty": 39 + }, + { + "mutability": "Not", + "span": 744, + "ty": 75 + }, + { + "mutability": "Mut", + "span": 736, + "ty": 114 + }, + { + "mutability": "Not", + "span": 736, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 737, + "ty": 114 + }, + { + "mutability": "Not", + "span": 737, + "ty": 23 + } + ], + "span": 768, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 741 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 742 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 745 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 1, + "span": 746 + }, + "value": { + "Const": { + "const_": { + "id": 73, + "kind": "ZeroSized", + "ty": 115 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 747 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 748 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 749 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 5, + "span": 750 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 6, + "span": 344 + }, + "value": { + "Place": { + "local": 9, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 0, + 72 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 7, + "span": 345 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": { + "projection": [ + { + "Field": [ + 1, + 77 + ] + } + ], + "ty": 71 + }, + "name": "self", + "source_info": { + "scope": 7, + "span": 345 + }, + "value": { + "Const": { + "const_": { + "id": 39, + "kind": "ZeroSized", + "ty": 77 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 8, + "span": 346 + }, + "value": { + "Place": { + "local": 10, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 9, + "span": 751 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 9, + "span": 752 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data", + "source_info": { + "scope": 14, + "span": 753 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "len", + "source_info": { + "scope": 14, + "span": 754 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "data_pointer", + "source_info": { + "scope": 15, + "span": 755 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "metadata", + "source_info": { + "scope": 15, + "span": 756 + }, + "value": { + "Place": { + "local": 8, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "v", + "source_info": { + "scope": 16, + "span": 757 + }, + "value": { + "Place": { + "local": 14, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 17, + "span": 758 + }, + "value": { + "Const": { + "const_": { + "id": 73, + "kind": "ZeroSized", + "ty": 115 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 17, + "span": 759 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 18, + "span": 760 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 18, + "span": 761 + }, + "value": { + "Const": { + "const_": { + "id": 73, + "kind": "ZeroSized", + "ty": 115 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 19, + "span": 758 + }, + "value": { + "Const": { + "const_": { + "id": 73, + "kind": "ZeroSized", + "ty": 115 + }, + "span": 32, + "user_ty": null + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "slice", + "source_info": { + "scope": 19, + "span": 759 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 20, + "span": 762 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 20, + "span": 763 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 21, + "span": 56 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 22, + "span": 56 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 23, + "span": 764 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 23, + "span": 765 + }, + "value": { + "Place": { + "local": 17, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 24, + "span": 766 + }, + "value": { + "Place": { + "local": 16, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 24, + "span": 767 + }, + "value": { + "Place": { + "local": 18, + "projection": [] + } + } + } + ] + } + ], + "id": 40, + "name": ">::eq" + } + }, + "symbol_name": "_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h9c119bf760646bc2E" + } + ] +} diff --git a/tests/integration/programs/str-empty.rs b/tests/integration/programs/str-empty.rs new file mode 100644 index 0000000..a92a02e --- /dev/null +++ b/tests/integration/programs/str-empty.rs @@ -0,0 +1,5 @@ +fn main() { + let a = ""; + + assert!(a == ""); +} \ No newline at end of file diff --git a/tests/integration/programs/str-empty.smir.json.expected b/tests/integration/programs/str-empty.smir.json.expected new file mode 100644 index 0000000..4f587e2 --- /dev/null +++ b/tests/integration/programs/str-empty.smir.json.expected @@ -0,0 +1,3224 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 61, + 61, + 32, + 34, + 34 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 7, + { + "Memory": { + "align": 1, + "bytes": [], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h544ca298fd981893E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h4e60a16e561622f8E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h2df40009830159bbE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17h7ebea87933a96534E" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h69cf50aaff9f5c63E" + } + ], + [ + 27, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8a7a569958061d49E" + } + ], + [ + 29, + { + "NormalSym": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h29105622a154f963E" + } + ], + [ + 32, + { + "IntrinsicSym": "size_of_val" + } + ], + [ + 33, + { + "IntrinsicSym": "compare_bytes" + } + ], + [ + 37, + { + "NormalSym": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17he0d203be58d060afE" + } + ], + [ + 38, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 41, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h5d645f8826581ab5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8a7a569958061d49E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h544ca298fd981893E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [], + "id": 3, + "name": "std::intrinsics::size_of_val::<[u8]>" + } + }, + "symbol_name": "_ZN4core10intrinsics11size_of_val17h0266a439570c5ebeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 44 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 47 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 48, + "ty": 22 + }, + { + "mutability": "Not", + "span": 49, + "ty": 23 + }, + { + "mutability": "Not", + "span": 50, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 49, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 50, + "ty": 24 + } + ], + "span": 51, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 49 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 50 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 4, + "name": "std::cmp::impls::::eq" + } + }, + "symbol_name": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17he0d203be58d060afE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 52, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Not", + "span": 52, + "ty": 26 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h182d0d446cc06b0eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 52, + "ty": 7 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h2df40009830159bbE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 52, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Not", + "span": 52, + "ty": 12 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 52, + "ty": 28 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h69cf50aaff9f5c63E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 53 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 53, + "ty": 1 + }, + { + "mutability": "Not", + "span": 53, + "ty": 26 + } + ], + "span": 53, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8b98d3f8513266f6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 30 + ] + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 4, + "projection": [] + } + ] + } + ] + }, + "span": 56 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 58 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 30 + ] + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 6, + "projection": [] + } + ] + } + ] + }, + "span": 58 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 54, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 55 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 60 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 60 + } + ], + "terminator": { + "kind": "Return", + "span": 59 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 61, + "ty": 22 + }, + { + "mutability": "Not", + "span": 62, + "ty": 24 + }, + { + "mutability": "Not", + "span": 63, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 31 + }, + { + "mutability": "Not", + "span": 56, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 58, + "ty": 31 + }, + { + "mutability": "Not", + "span": 58, + "ty": 30 + } + ], + "span": 67, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 62 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 63 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 64 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 64 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 49 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 3, + "span": 50 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 65 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 4, + "span": 66 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "core::str::traits::::eq" + } + }, + "symbol_name": "_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17h7ebea87933a96534E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 69, + "user_ty": null + } + } + } + ] + }, + "span": 69 + } + ], + "terminator": { + "kind": "Return", + "span": 68 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 70, + "ty": 17 + }, + { + "mutability": "Not", + "span": 71, + "ty": 1 + } + ], + "span": 72, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 71 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 8, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h4e60a16e561622f8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 73 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 74 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 74 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 75 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 75 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Ne", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 73 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 77 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 22 + }, + "span": 78, + "user_ty": null + } + } + } + ] + }, + "span": 78 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 79 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 76 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 77 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 77 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 79 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 82 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 5, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 83 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 83 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 84, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 84 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 76 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 76 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 88 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 87 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 89 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 90 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 34 + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 91 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 2, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 90 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 34 + ] + } + ] + }, + "span": 91 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 86, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 87 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 92, + "ty": 22 + }, + { + "mutability": "Not", + "span": 93, + "ty": 30 + }, + { + "mutability": "Not", + "span": 94, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 73, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 75, + "ty": 35 + }, + { + "mutability": "Not", + "span": 95, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 87, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 89, + "ty": 34 + }, + { + "mutability": "Mut", + "span": 91, + "ty": 34 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 36 + }, + { + "mutability": "Mut", + "span": 96, + "ty": 36 + }, + { + "mutability": "Mut", + "span": 96, + "ty": 36 + } + ], + "span": 99, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 93 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 94 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 95 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "val", + "source_info": { + "scope": 2, + "span": 97 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 98 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 98 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 9, + "name": "<[u8] as core::slice::cmp::SlicePartialEq>::equal" + } + }, + "symbol_name": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h29105622a154f963E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 101, + "user_ty": null + } + } + } + ] + }, + "span": 101 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 102 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 23 + }, + "span": 103, + "user_ty": null + } + } + } + ] + }, + "span": 103 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 15, + "kind": "ZeroSized", + "ty": 37 + }, + "span": 100, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 100 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 100 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 104 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 18, + "kind": "ZeroSized", + "ty": 38 + }, + "span": 105, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 105 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 106, + "ty": 1 + }, + { + "mutability": "Not", + "span": 107, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 100, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 102, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 103, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 105, + "ty": 39 + } + ], + "span": 108, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 107 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 103, + "user_ty": null + } + } + } + ] + }, + "span": 103 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 103 + } + ], + "terminator": { + "kind": "Return", + "span": 103 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 103, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 103, + "ty": 24 + } + ], + "span": 103, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 10, + "name": "main" + } + }, + "symbol_name": "_ZN9str_empty4main17hf8e3421947f62c31E" + } + ] +} diff --git a/tests/integration/programs/str-trivial.rs b/tests/integration/programs/str-trivial.rs new file mode 100644 index 0000000..b9bd092 --- /dev/null +++ b/tests/integration/programs/str-trivial.rs @@ -0,0 +1,5 @@ +fn main() { + let a = "a"; + + assert!(a == "a"); +} \ No newline at end of file diff --git a/tests/integration/programs/str-trivial.smir.json.expected b/tests/integration/programs/str-trivial.smir.json.expected new file mode 100644 index 0000000..edfd84e --- /dev/null +++ b/tests/integration/programs/str-trivial.smir.json.expected @@ -0,0 +1,3231 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [ + [ + 0, + 7 + ] + ] + } + } + } + ], + [ + 2, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 97, + 32, + 61, + 61, + 32, + 34, + 97, + 34 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 3, + { + "Memory": { + "align": 1, + "bytes": [ + 97 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 7, + { + "Memory": { + "align": 1, + "bytes": [ + 97 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17heb0630f5a0cd5086E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h2d18d5a9e8fb95abE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hca1f8df10907907fE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hc7a6bff4c06f14a6E" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h17ebc11c61414b3aE" + } + ], + [ + 27, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8cce9b152dc9cb99E" + } + ], + [ + 29, + { + "NormalSym": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5e8e428385f25c8bE" + } + ], + [ + 32, + { + "IntrinsicSym": "size_of_val" + } + ], + [ + 33, + { + "IntrinsicSym": "compare_bytes" + } + ], + [ + 37, + { + "NormalSym": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h6c4717c569400301E" + } + ], + [ + 38, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 40, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 101, + "user_ty": null + } + } + } + ] + }, + "span": 101 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 102 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 17, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 23 + }, + "span": 103, + "user_ty": null + } + } + } + ] + }, + "span": 103 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 15, + "kind": "ZeroSized", + "ty": 37 + }, + "span": 100, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 100 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 100 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 104 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 19, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 18, + "kind": "ZeroSized", + "ty": 38 + }, + "span": 105, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 105 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 106, + "ty": 1 + }, + { + "mutability": "Not", + "span": 107, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 100, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 102, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 103, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 105, + "ty": 39 + } + ], + "span": 108, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 107 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + } + } + }, + "ty": 24 + }, + "span": 103, + "user_ty": null + } + } + } + ] + }, + "span": 103 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 103 + } + ], + "terminator": { + "kind": "Return", + "span": 103 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 103, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 103, + "ty": 24 + } + ], + "span": 103, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 10, + "name": "main" + } + }, + "symbol_name": "_ZN11str_trivial4main17hd1f2bc6fabc04c2dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h28916d16c5f1dccaE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8cce9b152dc9cb99E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17heb0630f5a0cd5086E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [], + "id": 3, + "name": "std::intrinsics::size_of_val::<[u8]>" + } + }, + "symbol_name": "_ZN4core10intrinsics11size_of_val17hcf585b6f6289e086E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 44 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 47 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 48, + "ty": 22 + }, + { + "mutability": "Not", + "span": 49, + "ty": 23 + }, + { + "mutability": "Not", + "span": 50, + "ty": 23 + }, + { + "mutability": "Mut", + "span": 49, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 50, + "ty": 24 + } + ], + "span": 51, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 49 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 50 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 4, + "name": "std::cmp::impls::::eq" + } + }, + "symbol_name": "_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h6c4717c569400301E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 52, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Not", + "span": 52, + "ty": 26 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h21fff4c9e2eedc00E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 52, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Not", + "span": 52, + "ty": 12 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 52, + "ty": 28 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h17ebc11c61414b3aE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 52, + "ty": 7 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hca1f8df10907907fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 53 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 53, + "ty": 1 + }, + { + "mutability": "Not", + "span": 53, + "ty": 26 + } + ], + "span": 53, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h9a2a29885f89000bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 1, + "projection": [] + } + }, + 30 + ] + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 4, + "projection": [] + } + ] + } + ] + }, + "span": 56 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 58 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + "Transmute", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + 30 + ] + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 6, + "projection": [] + } + ] + } + ] + }, + "span": 58 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 9, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 54, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 55 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 60 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 60 + } + ], + "terminator": { + "kind": "Return", + "span": 59 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 61, + "ty": 22 + }, + { + "mutability": "Not", + "span": 62, + "ty": 24 + }, + { + "mutability": "Not", + "span": 63, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 31 + }, + { + "mutability": "Not", + "span": 56, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 58, + "ty": 31 + }, + { + "mutability": "Not", + "span": 58, + "ty": 30 + } + ], + "span": 67, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 62 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 63 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 64 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 64 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 49 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 3, + "span": 50 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 65 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 4, + "span": 66 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "core::str::traits::::eq" + } + }, + "symbol_name": "_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hc7a6bff4c06f14a6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 69, + "user_ty": null + } + } + } + ] + }, + "span": 69 + } + ], + "terminator": { + "kind": "Return", + "span": 68 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 70, + "ty": 17 + }, + { + "mutability": "Not", + "span": 71, + "ty": 1 + } + ], + "span": 72, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 71 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 8, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h2d18d5a9e8fb95abE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 73 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 74 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + } + ] + }, + "span": 74 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 75 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "UnaryOp": [ + "PtrMetadata", + { + "Copy": { + "local": 2, + "projection": [] + } + } + ] + } + ] + }, + "span": 75 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "Ne", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ] + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 73 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 77 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 22 + }, + "span": 78, + "user_ty": null + } + } + } + ] + }, + "span": 78 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 79 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 76 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 77 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 77 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 79 + }, + { + "kind": { + "StorageLive": 10 + }, + "span": 82 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 82 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 6, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 80, + "user_ty": null + } + }, + "target": 5, + "unwind": "Unreachable" + } + }, + "span": 81 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 9 + }, + "span": 83 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 83 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 84, + "user_ty": null + } + } + ] + } + ] + }, + "span": 85 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 84 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 76 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 76 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 10 + }, + "span": 88 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 87 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 89 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 1, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 90 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 11, + "projection": [] + } + }, + 34 + ] + } + ] + }, + "span": 89 + }, + { + "kind": { + "StorageLive": 9 + }, + "span": 91 + }, + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "AddressOf": [ + "Not", + { + "local": 2, + "projection": [ + "Deref" + ] + } + ] + } + ] + }, + "span": 90 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "Cast": [ + "PtrToPtr", + { + "Copy": { + "local": 12, + "projection": [] + } + }, + 34 + ] + } + ] + }, + "span": 91 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Move": { + "local": 9, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 33 + }, + "span": 86, + "user_ty": null + } + }, + "target": 3, + "unwind": "Unreachable" + } + }, + "span": 87 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 92, + "ty": 22 + }, + { + "mutability": "Not", + "span": 93, + "ty": 30 + }, + { + "mutability": "Not", + "span": 94, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 73, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 74, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 75, + "ty": 35 + }, + { + "mutability": "Not", + "span": 95, + "ty": 35 + }, + { + "mutability": "Mut", + "span": 87, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 89, + "ty": 34 + }, + { + "mutability": "Mut", + "span": 91, + "ty": 34 + }, + { + "mutability": "Mut", + "span": 82, + "ty": 36 + }, + { + "mutability": "Mut", + "span": 96, + "ty": 36 + }, + { + "mutability": "Mut", + "span": 96, + "ty": 36 + } + ], + "span": 99, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 93 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 94 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "size", + "source_info": { + "scope": 1, + "span": 95 + }, + "value": { + "Place": { + "local": 6, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "val", + "source_info": { + "scope": 2, + "span": 97 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 3, + "span": 98 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 4, + "span": 98 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 9, + "name": "<[u8] as core::slice::cmp::SlicePartialEq>::equal" + } + }, + "symbol_name": "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5e8e428385f25c8bE" + } + ] +} diff --git a/tests/integration/programs/strange-ref-deref.rs b/tests/integration/programs/strange-ref-deref.rs new file mode 100644 index 0000000..13e71d7 --- /dev/null +++ b/tests/integration/programs/strange-ref-deref.rs @@ -0,0 +1,7 @@ +fn main() { + let a = 42; + let mut b = &a; + b = &b; + + assert!(*b == 42); +} \ No newline at end of file diff --git a/tests/integration/programs/strange-ref-deref.smir.json.expected b/tests/integration/programs/strange-ref-deref.smir.json.expected new file mode 100644 index 0000000..176efaa --- /dev/null +++ b/tests/integration/programs/strange-ref-deref.smir.json.expected @@ -0,0 +1,1801 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 42, + 98, + 32, + 61, + 61, + 32, + 52, + 50 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h4c6d892f65578af7E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h61ff3532f28130abE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h17e4c3cc9ad24e82E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h491807954c4c1c5fE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h0564249960183bdaE" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 30, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + } + } + ] + }, + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 52 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 53 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "CopyForDeref": { + "local": 3, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 53 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 6, + "projection": [] + } + } + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 55 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 42, + 1 + ] + ], + "otherwise": 2 + } + } + }, + "span": 50 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 11, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 57, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 57 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 58, + "ty": 1 + }, + { + "mutability": "Not", + "span": 59, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 60, + "ty": 27 + }, + { + "mutability": "Not", + "span": 53, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 53, + "ty": 27 + } + ], + "span": 61, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "a", + "source_info": { + "scope": 1, + "span": 59 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "b", + "source_info": { + "scope": 2, + "span": 60 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN17strange_ref_deref4main17ha5ed69bb326768b5E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hc5c15f73999053e2E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h0564249960183bdaE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h4c6d892f65578af7E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h3055c96acf021728E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h17e4c3cc9ad24e82E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h491807954c4c1c5fE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h363eb22d98edc8abE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h61ff3532f28130abE" + } + ] +} diff --git a/tests/integration/programs/struct.rs b/tests/integration/programs/struct.rs new file mode 100644 index 0000000..c05abb5 --- /dev/null +++ b/tests/integration/programs/struct.rs @@ -0,0 +1,10 @@ + struct St { + a:u32, + b:u32, + } + + fn main() { + let s:St = St { a:1, b:2 }; + + assert!(s.a + 1 == s.b); + } \ No newline at end of file diff --git a/tests/integration/programs/struct.smir.json.expected b/tests/integration/programs/struct.smir.json.expected new file mode 100644 index 0000000..a86b779 --- /dev/null +++ b/tests/integration/programs/struct.smir.json.expected @@ -0,0 +1,1946 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 115, + 46, + 97, + 32, + 43, + 32, + 49, + 32, + 61, + 61, + 32, + 115, + 46, + 98 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h0699d3b40d658af9E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h07b34746fe4a8e28E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hb0b46d751d94c51dE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hc83a06bf843dd1dfE" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h304cf6e5c6625a84E" + } + ], + [ + 27, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 32, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h6f5509323d95d619E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h304cf6e5c6625a84E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h0699d3b40d658af9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h28b985da3dd0601dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hb0b46d751d94c51dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hc83a06bf843dd1dfE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3d358cb6450153bdE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h07b34746fe4a8e28E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 7, + 0, + [], + null, + null + ] + }, + [ + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 52, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 2, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 53, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 50, + "user_ty": null + } + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 5, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 1, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 50, + "user_ty": null + } + } + ] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 5, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 56 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 58 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 59, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 59 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 60, + "ty": 1 + }, + { + "mutability": "Not", + "span": 61, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 51, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 31 + } + ], + "span": 62, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "s", + "source_info": { + "scope": 1, + "span": 61 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN6struct4main17h5c592763fb9dc6c3E" + } + ] +} diff --git a/tests/integration/programs/sum-to-n.rs b/tests/integration/programs/sum-to-n.rs new file mode 100644 index 0000000..5741aa3 --- /dev/null +++ b/tests/integration/programs/sum-to-n.rs @@ -0,0 +1,23 @@ +fn sum_to_n(n:usize) -> usize { + let mut sum = 0; + let mut counter = n; + + while counter > 0 { + sum += counter; + counter = counter - 1; + } + return sum; +} + +fn test_sum_to_n() -> () { + let n = 10; + let golden = 55; + let sucess = sum_to_n(n) == golden; + assert!(sucess); +} + + +fn main() { + test_sum_to_n(); + return (); +} diff --git a/tests/integration/programs/sum-to-n.smir.json.expected b/tests/integration/programs/sum-to-n.smir.json.expected new file mode 100644 index 0000000..40fd144 --- /dev/null +++ b/tests/integration/programs/sum-to-n.smir.json.expected @@ -0,0 +1,2545 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 115, + 117, + 99, + 101, + 115, + 115 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hd35b85d5c0390cf1E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hcb7fa696e1ada2eeE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h1c41a4289354ed9eE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h91171ee1e758b4c8E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hbf65feaff4e3e97dE" + } + ], + [ + 28, + { + "NormalSym": "_ZN8sum_to_n8sum_to_n17h4938f719ae861d21E" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 32, + { + "NormalSym": "_ZN8sum_to_n13test_sum_to_n17h05511a3b7ab62339E" + } + ], + [ + 33, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17hbb5439d01d0d6fdfE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17hbf65feaff4e3e97dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17hd35b85d5c0390cf1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h70b1ea40c7b2e5b1E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h1c41a4289354ed9eE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h91171ee1e758b4c8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17he09300336d269a83E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hcb7fa696e1ada2eeE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 10, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 71, + "user_ty": null + } + } + } + ] + }, + "span": 72 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 69, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 70 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 55, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 74, + "user_ty": null + } + } + } + ] + }, + "span": 75 + }, + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 76 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 3 + } + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 15, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 30 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 14, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 77, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 77 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 78 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 79, + "ty": 1 + }, + { + "mutability": "Not", + "span": 80, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 70, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 75, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 77, + "ty": 31 + } + ], + "span": 83, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "n", + "source_info": { + "scope": 1, + "span": 81 + }, + "value": { + "Const": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 10, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 71, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "golden", + "source_info": { + "scope": 2, + "span": 82 + }, + "value": { + "Const": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 55, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 74, + "user_ty": null + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "sucess", + "source_info": { + "scope": 3, + "span": 80 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 7, + "name": "test_sum_to_n" + } + }, + "symbol_name": "_ZN8sum_to_n13test_sum_to_n17h05511a3b7ab62339E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 1, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 16, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 84, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 85 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 86 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 87, + "ty": 1 + }, + { + "mutability": "Not", + "span": 85, + "ty": 1 + } + ], + "span": 88, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 8, + "name": "main" + } + }, + "symbol_name": "_ZN8sum_to_n4main17h035b1be00fe7d484E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 51, + "user_ty": null + } + } + } + ] + }, + "span": 51 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [] + } + } + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 1 + } + }, + "span": 50 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "BinaryOp": [ + "Gt", + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 55, + "user_ty": null + } + } + ] + } + ] + }, + "span": 53 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 5 + ] + ], + "otherwise": 2 + } + } + }, + "span": 53 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Add", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ] + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 7, + "projection": [ + { + "Field": [ + 1, + 26 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Add", + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 6, + "projection": [] + } + } + ] + }, + "target": 3, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 7, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 3, + "projection": [] + } + } + } + ] + }, + "span": 60 + }, + { + "kind": { + "Assign": [ + { + "local": 9, + "projection": [] + }, + { + "CheckedBinaryOp": [ + "Sub", + { + "Copy": { + "local": 8, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 58, + "user_ty": null + } + } + ] + } + ] + }, + "span": 59 + } + ], + "terminator": { + "kind": { + "Assert": { + "cond": { + "Move": { + "local": 9, + "projection": [ + { + "Field": [ + 1, + 26 + ] + } + ] + } + }, + "expected": false, + "msg": { + "Overflow": [ + "Sub", + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 25 + }, + "span": 58, + "user_ty": null + } + } + ] + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 59 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Move": { + "local": 9, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 61 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 1 + } + }, + "span": 50 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [] + } + } + } + ] + }, + "span": 63 + } + ], + "terminator": { + "kind": "Return", + "span": 62 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 64, + "ty": 25 + }, + { + "mutability": "Not", + "span": 65, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 66, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 67, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 53, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 60, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 27 + } + ], + "span": 68, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "n", + "source_info": { + "scope": 0, + "span": 65 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "sum", + "source_info": { + "scope": 1, + "span": 66 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "counter", + "source_info": { + "scope": 2, + "span": 67 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "sum_to_n" + } + }, + "symbol_name": "_ZN8sum_to_n8sum_to_n17h4938f719ae861d21E" + } + ] +} diff --git a/tests/integration/programs/tuple-eq.rs b/tests/integration/programs/tuple-eq.rs new file mode 100644 index 0000000..0a79e18 --- /dev/null +++ b/tests/integration/programs/tuple-eq.rs @@ -0,0 +1,5 @@ +fn main() { + let tup:(i32, i32) = (42, 99); + + assert!(tup == (42, 99)); +} \ No newline at end of file diff --git a/tests/integration/programs/tuple-eq.smir.json.expected b/tests/integration/programs/tuple-eq.smir.json.expected new file mode 100644 index 0000000..60fc5b0 --- /dev/null +++ b/tests/integration/programs/tuple-eq.smir.json.expected @@ -0,0 +1,2622 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0, + 99, + 0, + 0, + 0 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ], + [ + 1, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 116, + 117, + 112, + 32, + 61, + 61, + 32, + 40, + 52, + 50, + 44, + 32, + 57, + 57, + 41 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h333150e68339170dE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h802a391040998644E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hc8fe996961b168afE" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 23, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h25f27f1fe7e893baE" + } + ], + [ + 25, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h79451430f217f4ecE" + } + ], + [ + 27, + { + "NormalSym": "_ZN4core3cmp5impls54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$i32$GT$2eq17ha183e644e33f34d8E" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core5tuple64_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$$LP$U$C$T$RP$$GT$2eq17h01cda7e1735747c8E" + } + ], + [ + 30, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 34, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h4a8ff1f95d63fd82E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h79451430f217f4ecE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h333150e68339170dE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 44 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 44 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 45 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 46 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 47 + }, + { + "kind": { + "StorageDead": 3 + }, + "span": 47 + } + ], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 48, + "ty": 21 + }, + { + "mutability": "Not", + "span": 49, + "ty": 22 + }, + { + "mutability": "Not", + "span": 50, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 44, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 45, + "ty": 16 + } + ], + "span": 51, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 49 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 50 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 3, + "name": "std::cmp::impls::::eq" + } + }, + "symbol_name": "_ZN4core3cmp5impls54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$i32$GT$2eq17ha183e644e33f34d8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 52, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Not", + "span": 52, + "ty": 24 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 4, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h485d9eaffc868729E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 52 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 52, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 16 + }, + { + "mutability": "Not", + "span": 52, + "ty": 12 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 52, + "ty": 26 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 4, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h25f27f1fe7e893baE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 52 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 52, + "ty": 1 + }, + { + "mutability": "Not", + "span": 52, + "ty": 7 + }, + { + "mutability": "Not", + "span": 52, + "ty": 1 + } + ], + "span": 52, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 4, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hc8fe996961b168afE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 53 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 53, + "ty": 1 + }, + { + "mutability": "Not", + "span": 53, + "ty": 24 + } + ], + "span": 53, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 5, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17ha00f3cf49702cdddE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 54 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 16 + ] + } + ] + } + ] + } + ] + }, + "span": 55 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + "Deref", + { + "Field": [ + 0, + 16 + ] + } + ] + } + ] + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 54, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 54 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 57 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 57 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 1, + 16 + ] + } + ] + } + ] + } + ] + }, + "span": 55 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + "Deref", + { + "Field": [ + 1, + 16 + ] + } + ] + } + ] + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 7, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 54, + "user_ty": null + } + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 57 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 57 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 21 + }, + "span": 54, + "user_ty": null + } + } + } + ] + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 7 + }, + "span": 57 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 54 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 57 + } + ], + "terminator": { + "kind": "Return", + "span": 58 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 59, + "ty": 21 + }, + { + "mutability": "Not", + "span": 60, + "ty": 28 + }, + { + "mutability": "Not", + "span": 61, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 22 + }, + { + "mutability": "Mut", + "span": 56, + "ty": 22 + } + ], + "span": 62, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 60 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "other", + "source_info": { + "scope": 0, + "span": 61 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "core::tuple::::eq" + } + }, + "symbol_name": "_ZN4core5tuple64_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$$LP$U$C$T$RP$$GT$2eq17h01cda7e1735747c8E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 64, + "user_ty": null + } + } + } + ] + }, + "span": 64 + } + ], + "terminator": { + "kind": "Return", + "span": 63 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 65, + "ty": 17 + }, + { + "mutability": "Not", + "span": 66, + "ty": 1 + } + ], + "span": 67, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 66 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 7, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h802a391040998644E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 69, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 99, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 70, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 71 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 72 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 14, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 28 + }, + "span": 73, + "user_ty": null + } + } + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 68, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 68 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ] + ], + "otherwise": 2 + } + } + }, + "span": 68 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 74 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 16, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 33, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + } + } + }, + "ty": 31 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 15, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 75, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 75 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 76, + "ty": 1 + }, + { + "mutability": "Not", + "span": 77, + "ty": 32 + }, + { + "mutability": "Mut", + "span": 68, + "ty": 21 + }, + { + "mutability": "Mut", + "span": 72, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 73, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 75, + "ty": 33 + } + ], + "span": 78, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "tup", + "source_info": { + "scope": 1, + "span": 77 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + }, + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 79, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 13, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 99, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 80, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 73 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": "Return", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 73, + "ty": 32 + } + ], + "span": 73, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 8, + "name": "main" + } + }, + "symbol_name": "_ZN8tuple_eq4main17ha65f20838f174f24E" + } + ] +} diff --git a/tests/integration/programs/tuples-simple.rs b/tests/integration/programs/tuples-simple.rs new file mode 100644 index 0000000..9493bc4 --- /dev/null +++ b/tests/integration/programs/tuples-simple.rs @@ -0,0 +1,5 @@ +fn main() { + let tup:(i32, i32) = (42, 99); + + assert!(tup.0 != tup.1); +} \ No newline at end of file diff --git a/tests/integration/programs/tuples-simple.smir.json.expected b/tests/integration/programs/tuples-simple.smir.json.expected new file mode 100644 index 0000000..fa58c75 --- /dev/null +++ b/tests/integration/programs/tuples-simple.smir.json.expected @@ -0,0 +1,1792 @@ +{ + "allocs": [ + [ + 0, + { + "Memory": { + "align": 1, + "bytes": [ + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 116, + 117, + 112, + 46, + 48, + 32, + 33, + 61, + 32, + 116, + 117, + 112, + 46, + 49 + ], + "mutability": "Not", + "provenance": { + "ptrs": [] + } + } + } + ] + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h51b943990c0e2c96E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h00643f07709fa1eaE" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h23382e62d2feae6bE" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h0d9b04fb7ab9c1b6E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hafce5092b1d3d3a9E" + } + ], + [ + 23, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h0a77e0c39c7e9e81E" + } + ], + [ + 25, + { + "NormalSym": "_ZN4core9panicking5panic17h1b078f0122adb34fE" + } + ], + [ + 30, + { + "NoOpSym": "" + } + ] + ], + "items": [ + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 0, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 42, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 51, + "user_ty": null + } + }, + { + "Constant": { + "const_": { + "id": 10, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 99, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 16 + }, + "span": 52, + "user_ty": null + } + } + ] + ] + } + ] + }, + "span": 53 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 54 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 16 + ] + } + ] + } + } + } + ] + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "BinaryOp": [ + "Ne", + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 50 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 2, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 50 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 56 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 12, + "kind": { + "Allocated": { + "align": 8, + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 25 + }, + "span": 57, + "user_ty": null + } + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 57 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 58, + "ty": 1 + }, + { + "mutability": "Not", + "span": 59, + "ty": 27 + }, + { + "mutability": "Mut", + "span": 50, + "ty": 28 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 55, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 57, + "ty": 29 + } + ], + "span": 60, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "tup", + "source_info": { + "scope": 1, + "span": 59 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + } + ] + } + ], + "id": 6, + "name": "main" + } + }, + "symbol_name": "_ZN13tuples_simple4main17hf563d963407a8479E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 7 + }, + "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" + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "StorageDead": 7 + }, + "span": 4 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 0, + "kind": "ZeroSized", + "ty": 0 + }, + "span": 0, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 6 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 8 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 8 + } + ], + "terminator": { + "kind": "Return", + "span": 5 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 9, + "ty": 6 + }, + { + "mutability": "Not", + "span": 10, + "ty": 7 + }, + { + "mutability": "Not", + "span": 11, + "ty": 6 + }, + { + "mutability": "Not", + "span": 12, + "ty": 8 + }, + { + "mutability": "Not", + "span": 13, + "ty": 9 + }, + { + "mutability": "Mut", + "span": 1, + "ty": 10 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 5 + }, + { + "mutability": "Mut", + "span": 2, + "ty": 11 + }, + { + "mutability": "Not", + "span": 3, + "ty": 12 + } + ], + "span": 14, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "argc", + "source_info": { + "scope": 0, + "span": 11 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 3, + "composite": null, + "name": "argv", + "source_info": { + "scope": 0, + "span": 12 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "sigpipe", + "source_info": { + "scope": 0, + "span": 13 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "v", + "source_info": { + "scope": 1, + "span": 7 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + } + ] + } + ], + "id": 0, + "name": "std::rt::lang_start::<()>" + } + }, + "symbol_name": "_ZN3std2rt10lang_start17h08d5ed836490d97bE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 17 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 18 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 18 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 1, + "kind": "ZeroSized", + "ty": 13 + }, + "span": 15, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 20 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 2, + "kind": "ZeroSized", + "ty": 14 + }, + "span": 19, + "user_ty": null + } + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 17 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 23 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 24 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 27 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 4 + } + ], + "terminator": { + "kind": "Return", + "span": 21 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 28, + "ty": 16 + }, + { + "mutability": "Mut", + "span": 3, + "ty": 11 + }, + { + "mutability": "Mut", + "span": 17, + "ty": 17 + }, + { + "mutability": "Mut", + "span": 16, + "ty": 1 + }, + { + "mutability": "Mut", + "span": 18, + "ty": 7 + }, + { + "mutability": "Mut", + "span": 23, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 24, + "ty": 9 + } + ], + "span": 3, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": null, + "composite": null, + "name": "main", + "source_info": { + "scope": 0, + "span": 10 + }, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 29 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } + } + ] + } + ], + "id": 1, + "name": "std::rt::lang_start::<()>::{closure#0}" + } + }, + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h0a77e0c39c7e9e81E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 3, + "kind": "ZeroSized", + "ty": 19 + }, + "span": 31, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Constant": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 5, + "kind": "ZeroSized", + "ty": 20 + }, + "span": 34, + "user_ty": null + } + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 37, + "ty": 1 + }, + { + "mutability": "Not", + "span": 38, + "ty": 7 + }, + { + "mutability": "Not", + "span": 39, + "ty": 1 + } + ], + "span": 42, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 38 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "result", + "source_info": { + "scope": 1, + "span": 40 + }, + "value": { + "Place": { + "local": 0, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "dummy", + "source_info": { + "scope": 2, + "span": 41 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 2, + "name": "std::sys::backtrace::__rust_begin_short_backtrace::" + } + }, + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h00643f07709fa1eaE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 21 + }, + "span": 43, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 22 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hf3797bbe895965bfE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 43 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 43 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 7 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h0d9b04fb7ab9c1b6E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 43 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 7, + "kind": "ZeroSized", + "ty": 23 + }, + "span": 43, + "user_ty": null + } + }, + "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": [ + { + "mutability": "Mut", + "span": 43, + "ty": 16 + }, + { + "mutability": "Not", + "span": 43, + "ty": 12 + }, + { + "mutability": "Not", + "span": 43, + "ty": 1 + }, + { + "mutability": "Not", + "span": 43, + "ty": 24 + } + ], + "span": 43, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 3, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hafce5092b1d3d3a9E" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 44 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 44, + "ty": 1 + }, + { + "mutability": "Not", + "span": 44, + "ty": 22 + } + ], + "span": 44, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 4, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h55cd7ab616222eddE" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "const_": { + "id": 8, + "kind": { + "Allocated": { + "align": 1, + "bytes": [ + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 17 + }, + "span": 46, + "user_ty": null + } + } + } + ] + }, + "span": 46 + } + ], + "terminator": { + "kind": "Return", + "span": 45 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 47, + "ty": 17 + }, + { + "mutability": "Not", + "span": 48, + "ty": 1 + } + ], + "span": 49, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] + } + ], + "id": 5, + "name": "<() as std::process::Termination>::report" + } + }, + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h23382e62d2feae6bE" + } + ] +} From c0e21c564ef1d7cd7b642d7d73805ed3d75ac443 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Mon, 18 Nov 2024 13:53:37 +1100 Subject: [PATCH 09/12] move some failing tests (non-deterministic output) --- tests/integration/{programs => failing}/array.rs | 0 tests/integration/{programs => failing}/array.smir.json.expected | 0 tests/integration/{programs => failing}/box.rs | 0 tests/integration/{programs => failing}/box.smir.json.expected | 0 tests/integration/{programs => failing}/defined-trait.rs | 0 .../{programs => failing}/defined-trait.smir.json.expected | 0 tests/integration/{programs => failing}/derive-copy-struct.rs | 0 .../{programs => failing}/derive-copy-struct.smir.json.expected | 0 tests/integration/{programs => failing}/generic.rs | 0 .../integration/{programs => failing}/generic.smir.json.expected | 0 tests/integration/{programs => failing}/std-string-empty.rs | 0 .../{programs => failing}/std-string-empty.smir.json.expected | 0 tests/integration/{programs => failing}/std-to-string.rs | 0 .../{programs => failing}/std-to-string.smir.json.expected | 0 tests/integration/{programs => failing}/str-empty.rs | 0 .../{programs => failing}/str-empty.smir.json.expected | 0 tests/integration/{programs => failing}/str-trivial.rs | 0 .../{programs => failing}/str-trivial.smir.json.expected | 0 18 files changed, 0 insertions(+), 0 deletions(-) rename tests/integration/{programs => failing}/array.rs (100%) rename tests/integration/{programs => failing}/array.smir.json.expected (100%) rename tests/integration/{programs => failing}/box.rs (100%) rename tests/integration/{programs => failing}/box.smir.json.expected (100%) rename tests/integration/{programs => failing}/defined-trait.rs (100%) rename tests/integration/{programs => failing}/defined-trait.smir.json.expected (100%) rename tests/integration/{programs => failing}/derive-copy-struct.rs (100%) rename tests/integration/{programs => failing}/derive-copy-struct.smir.json.expected (100%) rename tests/integration/{programs => failing}/generic.rs (100%) rename tests/integration/{programs => failing}/generic.smir.json.expected (100%) rename tests/integration/{programs => failing}/std-string-empty.rs (100%) rename tests/integration/{programs => failing}/std-string-empty.smir.json.expected (100%) rename tests/integration/{programs => failing}/std-to-string.rs (100%) rename tests/integration/{programs => failing}/std-to-string.smir.json.expected (100%) rename tests/integration/{programs => failing}/str-empty.rs (100%) rename tests/integration/{programs => failing}/str-empty.smir.json.expected (100%) rename tests/integration/{programs => failing}/str-trivial.rs (100%) rename tests/integration/{programs => failing}/str-trivial.smir.json.expected (100%) diff --git a/tests/integration/programs/array.rs b/tests/integration/failing/array.rs similarity index 100% rename from tests/integration/programs/array.rs rename to tests/integration/failing/array.rs diff --git a/tests/integration/programs/array.smir.json.expected b/tests/integration/failing/array.smir.json.expected similarity index 100% rename from tests/integration/programs/array.smir.json.expected rename to tests/integration/failing/array.smir.json.expected diff --git a/tests/integration/programs/box.rs b/tests/integration/failing/box.rs similarity index 100% rename from tests/integration/programs/box.rs rename to tests/integration/failing/box.rs diff --git a/tests/integration/programs/box.smir.json.expected b/tests/integration/failing/box.smir.json.expected similarity index 100% rename from tests/integration/programs/box.smir.json.expected rename to tests/integration/failing/box.smir.json.expected diff --git a/tests/integration/programs/defined-trait.rs b/tests/integration/failing/defined-trait.rs similarity index 100% rename from tests/integration/programs/defined-trait.rs rename to tests/integration/failing/defined-trait.rs diff --git a/tests/integration/programs/defined-trait.smir.json.expected b/tests/integration/failing/defined-trait.smir.json.expected similarity index 100% rename from tests/integration/programs/defined-trait.smir.json.expected rename to tests/integration/failing/defined-trait.smir.json.expected diff --git a/tests/integration/programs/derive-copy-struct.rs b/tests/integration/failing/derive-copy-struct.rs similarity index 100% rename from tests/integration/programs/derive-copy-struct.rs rename to tests/integration/failing/derive-copy-struct.rs diff --git a/tests/integration/programs/derive-copy-struct.smir.json.expected b/tests/integration/failing/derive-copy-struct.smir.json.expected similarity index 100% rename from tests/integration/programs/derive-copy-struct.smir.json.expected rename to tests/integration/failing/derive-copy-struct.smir.json.expected diff --git a/tests/integration/programs/generic.rs b/tests/integration/failing/generic.rs similarity index 100% rename from tests/integration/programs/generic.rs rename to tests/integration/failing/generic.rs diff --git a/tests/integration/programs/generic.smir.json.expected b/tests/integration/failing/generic.smir.json.expected similarity index 100% rename from tests/integration/programs/generic.smir.json.expected rename to tests/integration/failing/generic.smir.json.expected diff --git a/tests/integration/programs/std-string-empty.rs b/tests/integration/failing/std-string-empty.rs similarity index 100% rename from tests/integration/programs/std-string-empty.rs rename to tests/integration/failing/std-string-empty.rs diff --git a/tests/integration/programs/std-string-empty.smir.json.expected b/tests/integration/failing/std-string-empty.smir.json.expected similarity index 100% rename from tests/integration/programs/std-string-empty.smir.json.expected rename to tests/integration/failing/std-string-empty.smir.json.expected diff --git a/tests/integration/programs/std-to-string.rs b/tests/integration/failing/std-to-string.rs similarity index 100% rename from tests/integration/programs/std-to-string.rs rename to tests/integration/failing/std-to-string.rs diff --git a/tests/integration/programs/std-to-string.smir.json.expected b/tests/integration/failing/std-to-string.smir.json.expected similarity index 100% rename from tests/integration/programs/std-to-string.smir.json.expected rename to tests/integration/failing/std-to-string.smir.json.expected diff --git a/tests/integration/programs/str-empty.rs b/tests/integration/failing/str-empty.rs similarity index 100% rename from tests/integration/programs/str-empty.rs rename to tests/integration/failing/str-empty.rs diff --git a/tests/integration/programs/str-empty.smir.json.expected b/tests/integration/failing/str-empty.smir.json.expected similarity index 100% rename from tests/integration/programs/str-empty.smir.json.expected rename to tests/integration/failing/str-empty.smir.json.expected diff --git a/tests/integration/programs/str-trivial.rs b/tests/integration/failing/str-trivial.rs similarity index 100% rename from tests/integration/programs/str-trivial.rs rename to tests/integration/failing/str-trivial.rs diff --git a/tests/integration/programs/str-trivial.smir.json.expected b/tests/integration/failing/str-trivial.smir.json.expected similarity index 100% rename from tests/integration/programs/str-trivial.smir.json.expected rename to tests/integration/failing/str-trivial.smir.json.expected From 64da37c4096c5d7494b211e9f4f2f96733439121 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Mon, 18 Nov 2024 14:01:27 +1100 Subject: [PATCH 10/12] Do not remove Static allocations, mv panic_example to failing --- tests/integration/{programs => failing}/panic_example.rs | 0 .../{programs => failing}/panic_example.smir.json.expected | 0 tests/integration/normalise-filter.jq | 2 -- 3 files changed, 2 deletions(-) rename tests/integration/{programs => failing}/panic_example.rs (100%) rename tests/integration/{programs => failing}/panic_example.smir.json.expected (100%) diff --git a/tests/integration/programs/panic_example.rs b/tests/integration/failing/panic_example.rs similarity index 100% rename from tests/integration/programs/panic_example.rs rename to tests/integration/failing/panic_example.rs diff --git a/tests/integration/programs/panic_example.smir.json.expected b/tests/integration/failing/panic_example.smir.json.expected similarity index 100% rename from tests/integration/programs/panic_example.smir.json.expected rename to tests/integration/failing/panic_example.smir.json.expected diff --git a/tests/integration/normalise-filter.jq b/tests/integration/normalise-filter.jq index 3588770..23c7e97 100644 --- a/tests/integration/normalise-filter.jq +++ b/tests/integration/normalise-filter.jq @@ -2,8 +2,6 @@ ( [ .allocs[] ] # sort allocs by their ID | sort_by(.[0]) -# TODO this should be removed - | map ( select( .[1] | has("Static") | not ) ) ), functions: ( [ .functions[] ] From 2fde6aa8647e795fb7ee4a0102ffe82202e92538 Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Mon, 18 Nov 2024 14:18:57 +1100 Subject: [PATCH 11/12] adjust links to panic_example files --- panic_example.rs | 2 +- panic_example.smir.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/panic_example.rs b/panic_example.rs index aeac1bb..ceaa7a0 120000 --- a/panic_example.rs +++ b/panic_example.rs @@ -1 +1 @@ -tests/integration/programs/panic_example.rs \ No newline at end of file +tests/integration/failing/panic_example.rs \ No newline at end of file diff --git a/panic_example.smir.json b/panic_example.smir.json index e509739..afb97ef 120000 --- a/panic_example.smir.json +++ b/panic_example.smir.json @@ -1 +1 @@ -tests/integration/programs/panic_example.smir.json.expected \ No newline at end of file +tests/integration/failing/panic_example.smir.json.expected \ No newline at end of file From 0da2714cb195d3683d5ffea5ac99142557e8d29f Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Mon, 18 Nov 2024 17:21:39 +1100 Subject: [PATCH 12/12] update expected files for failing tests --- .../failing/box.smir.json.expected | 10 +++++++-- .../failing/defined-trait.smir.json.expected | 22 ++++++++++++------- .../failing/generic.smir.json.expected | 2 +- .../failing/panic_example.smir.json.expected | 6 +++++ .../std-string-empty.smir.json.expected | 4 ++-- .../failing/std-to-string.smir.json.expected | 18 ++++++++++----- .../failing/str-empty.smir.json.expected | 2 +- .../failing/str-trivial.smir.json.expected | 2 +- 8 files changed, 45 insertions(+), 21 deletions(-) diff --git a/tests/integration/failing/box.smir.json.expected b/tests/integration/failing/box.smir.json.expected index 35ecf5d..f16c814 100644 --- a/tests/integration/failing/box.smir.json.expected +++ b/tests/integration/failing/box.smir.json.expected @@ -340,6 +340,12 @@ } } ], + [ + 7, + { + "Static": 92 + } + ], [ 8, { @@ -742,13 +748,13 @@ [ 90, { - "NoOpSym": "" + "NormalSym": "_ZN4core3ptr49drop_in_place$LT$alloc..boxed..Box$LT$i32$GT$$GT$17hba8e3b90af82b457E" } ], [ 91, { - "NormalSym": "_ZN4core3ptr49drop_in_place$LT$alloc..boxed..Box$LT$i32$GT$$GT$17hba8e3b90af82b457E" + "NoOpSym": "" } ], [ diff --git a/tests/integration/failing/defined-trait.smir.json.expected b/tests/integration/failing/defined-trait.smir.json.expected index 3c053e1..1e7bc4a 100644 --- a/tests/integration/failing/defined-trait.smir.json.expected +++ b/tests/integration/failing/defined-trait.smir.json.expected @@ -828,6 +828,12 @@ } } ], + [ + 9, + { + "Static": 70 + } + ], [ 10, { @@ -1429,31 +1435,31 @@ [ 122, { - "NoOpSym": "" + "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h850550b9d403c3e1E" } ], [ - 124, + 123, { - "NoOpSym": "" + "NormalSym": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h62be22db9faf5d6aE" } ], [ - 125, + 124, { "NormalSym": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h5bb83139422cc7e6E" } ], [ - 126, + 125, { - "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h850550b9d403c3e1E" + "NoOpSym": "" } ], [ - 127, + 126, { - "NormalSym": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h62be22db9faf5d6aE" + "NoOpSym": "" } ] ], diff --git a/tests/integration/failing/generic.smir.json.expected b/tests/integration/failing/generic.smir.json.expected index c1c0e94..e7192f5 100644 --- a/tests/integration/failing/generic.smir.json.expected +++ b/tests/integration/failing/generic.smir.json.expected @@ -203,7 +203,7 @@ } ], [ - 49, + 50, { "NoOpSym": "" } diff --git a/tests/integration/failing/panic_example.smir.json.expected b/tests/integration/failing/panic_example.smir.json.expected index aae05d4..56b3b47 100644 --- a/tests/integration/failing/panic_example.smir.json.expected +++ b/tests/integration/failing/panic_example.smir.json.expected @@ -340,6 +340,12 @@ } } ], + [ + 7, + { + "Static": 115 + } + ], [ 8, { diff --git a/tests/integration/failing/std-string-empty.smir.json.expected b/tests/integration/failing/std-string-empty.smir.json.expected index 1e72ffd..6fee598 100644 --- a/tests/integration/failing/std-string-empty.smir.json.expected +++ b/tests/integration/failing/std-string-empty.smir.json.expected @@ -703,13 +703,13 @@ [ 89, { - "NormalSym": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h63cbb232c447c463E" + "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha4e7fc423a077132E" } ], [ 90, { - "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha4e7fc423a077132E" + "NormalSym": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h63cbb232c447c463E" } ], [ diff --git a/tests/integration/failing/std-to-string.smir.json.expected b/tests/integration/failing/std-to-string.smir.json.expected index e91ac69..460c943 100644 --- a/tests/integration/failing/std-to-string.smir.json.expected +++ b/tests/integration/failing/std-to-string.smir.json.expected @@ -828,6 +828,12 @@ } } ], + [ + 9, + { + "Static": 139 + } + ], [ 10, { @@ -1315,19 +1321,19 @@ } ], [ - 120, + 119, { - "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h5579b46778b517b5E" + "NormalSym": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h471900168bc51ec1E" } ], [ - 121, + 120, { "NoOpSym": "" } ], [ - 122, + 121, { "NormalSym": "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9c3d7457c17d0509E" } @@ -1335,13 +1341,13 @@ [ 123, { - "NoOpSym": "" + "NormalSym": "_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h5579b46778b517b5E" } ], [ 124, { - "NormalSym": "_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h471900168bc51ec1E" + "NoOpSym": "" } ] ], diff --git a/tests/integration/failing/str-empty.smir.json.expected b/tests/integration/failing/str-empty.smir.json.expected index 4f587e2..bcf70bb 100644 --- a/tests/integration/failing/str-empty.smir.json.expected +++ b/tests/integration/failing/str-empty.smir.json.expected @@ -194,7 +194,7 @@ } ], [ - 41, + 42, { "NoOpSym": "" } diff --git a/tests/integration/failing/str-trivial.smir.json.expected b/tests/integration/failing/str-trivial.smir.json.expected index edfd84e..2110277 100644 --- a/tests/integration/failing/str-trivial.smir.json.expected +++ b/tests/integration/failing/str-trivial.smir.json.expected @@ -201,7 +201,7 @@ } ], [ - 40, + 41, { "NoOpSym": "" }