diff --git a/CHANGES.md b/CHANGES.md index c6581f0b67..954445d3c8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,10 @@ # next -- TBA +## New Features + +* Add `mir_equal` and `jvm_equal` commands, which mirror the `llvm_equal` + command for the MIR and JVM backends, respectively. + ## Bug fixes * Counterexamples including SMT arrays are now printed with the array diff --git a/doc/manual/manual.md b/doc/manual/manual.md index c98e7b517a..3cdcf54888 100644 --- a/doc/manual/manual.md +++ b/doc/manual/manual.md @@ -3710,16 +3710,18 @@ values in scope at the time. * `mir_postcond : Term -> MIRSetup ()` * `mir_assert : Term -> MIRSetup ()` -These commands take `Term` arguments, and therefore cannot describe -the values of pointers. The "assert" variants will work in either pre- -or post-conditions, and are useful when defining helper functions -that, e.g., state datastructure invariants that make sense in both -phases. The `llvm_equal` command states that two `SetupValue`s should -be equal, and can be used in either the initial or the final state. +These commands take `Term` arguments, and therefore cannot describe the values +of pointers. The "assert" variants will work in either pre- or post-conditions, +and are useful when defining helper functions that, e.g., provide datastructure +invariants that make sense in both phases. The `{llvm,jvm,mir}_equal` commands +state that two values should be equal, and can be used in either the initial or +the final state. * `llvm_equal : SetupValue -> SetupValue -> LLVMSetup ()` +* `jvm_equal : JVMValue -> JVMValue -> JVMSetup ()` +* `mir_equal : MIRValue -> MIRValue -> MIRSetup ()` -The use of `llvm_equal` can also sometimes lead to more efficient +The use of `{llvm,jvm,mir}_equal` can also sometimes lead to more efficient symbolic execution when the predicate of interest is an equality. ## Assuming specifications diff --git a/doc/manual/manual.pdf b/doc/manual/manual.pdf index 3f088d6e6a..e651b1f40d 100644 Binary files a/doc/manual/manual.pdf and b/doc/manual/manual.pdf differ diff --git a/intTests/test1998_jvm/Makefile b/intTests/test1998_jvm/Makefile new file mode 100644 index 0000000000..94675b9b1f --- /dev/null +++ b/intTests/test1998_jvm/Makefile @@ -0,0 +1,2 @@ +%.class: %.java + javac -g $< diff --git a/intTests/test1998_jvm/Test.class b/intTests/test1998_jvm/Test.class new file mode 100644 index 0000000000..7eb9681d0d Binary files /dev/null and b/intTests/test1998_jvm/Test.class differ diff --git a/intTests/test1998_jvm/Test.java b/intTests/test1998_jvm/Test.java new file mode 100644 index 0000000000..c059c6cae3 --- /dev/null +++ b/intTests/test1998_jvm/Test.java @@ -0,0 +1,5 @@ +class Test { + static boolean f(int x, int y) { + return x == y; + } +} diff --git a/intTests/test1998_jvm/test.saw b/intTests/test1998_jvm/test.saw new file mode 100644 index 0000000000..59924d12d3 --- /dev/null +++ b/intTests/test1998_jvm/test.saw @@ -0,0 +1,12 @@ +let f_spec = do { + x <- jvm_fresh_var "x" java_int; + y <- jvm_fresh_var "y" java_int; + jvm_equal (jvm_term x) (jvm_term y); + + jvm_execute_func [jvm_term x, jvm_term y]; + + jvm_return (jvm_term {{ True }}); +}; + +c <- java_load_class "Test"; +jvm_verify c "f" [] false f_spec z3; diff --git a/intTests/test1998_jvm/test.sh b/intTests/test1998_jvm/test.sh new file mode 100755 index 0000000000..0b864017cd --- /dev/null +++ b/intTests/test1998_jvm/test.sh @@ -0,0 +1 @@ +$SAW test.saw diff --git a/intTests/test1998_mir/Makefile b/intTests/test1998_mir/Makefile new file mode 100644 index 0000000000..55d84902a1 --- /dev/null +++ b/intTests/test1998_mir/Makefile @@ -0,0 +1,17 @@ +# The current checked-in linked-mir.json file was generated by: +# rustc 1.69.0-nightly (5e37043d6 2023-01-22) +# mir-json c52b16bf26af2f5b98157ebf9975aa0021982bbc from 2024-09-11 + +all: test.linked-mir.json + +test.linked-mir.json: test.rs + saw-rustc $< + $(MAKE) remove-unused-build-artifacts + +.PHONY: remove-unused-build-artifacts +remove-unused-build-artifacts: + rm -f test libtest.mir libtest.rlib + +.PHONY: clean +clean: remove-unused-build-artifacts + rm -f test.linked-mir.json diff --git a/intTests/test1998_mir/test.linked-mir.json b/intTests/test1998_mir/test.linked-mir.json new file mode 100644 index 0000000000..dd442fff38 --- /dev/null +++ b/intTests/test1998_mir/test.linked-mir.json @@ -0,0 +1 @@ +{"version":1,"fns":[{"abi":{"kind":"Rust"},"args":[{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Array::6ce3c3db7eed808e"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::Array::6ce3c3db7eed808e"}],"body":{"blocks":[{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::bool"}},"pos":"test.rs:2:24: 2:28","rhs":{"kind":"Use","usevar":{"data":{"rendered":{"kind":"bool","size":1,"val":"1"},"ty":"ty::bool"},"kind":"Constant"}}},{"kind":"Deinit","pos":"test.rs:3:14: 3:19"},{"kind":"Assign","lhs":{"data":[{"field":0,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Adt::a72d82d5b19bcba3"}},"pos":"test.rs:3:14: 3:19","rhs":{"kind":"Use","usevar":{"data":{"rendered":{"kind":"usize","size":8,"val":"0"},"ty":"ty::usize"},"kind":"Constant"}}},{"kind":"Assign","lhs":{"data":[{"field":1,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Adt::a72d82d5b19bcba3"}},"pos":"test.rs:3:14: 3:19","rhs":{"kind":"Use","usevar":{"data":{"rendered":{"kind":"usize","size":8,"val":"32"},"ty":"ty::usize"},"kind":"Constant"}}}],"terminator":{"args":[{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Adt::a72d82d5b19bcba3"}},"kind":"Move"}],"cleanup":null,"destination":[{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::Adt::a72d82d5b19bcba3"}},"bb1"],"from_hir_call":true,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::66d1aba9f0c3ae7d"},"kind":"Constant"},"kind":"Call","pos":"test.rs:3:14: 3:19 !test.rs:3:14: 3:19"}},"blockid":"bb0"},{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::Adt::a72d82d5b19bcba3"}},"pos":"test.rs:3:14: 3:19 !test.rs:3:14: 3:19","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::Adt::a72d82d5b19bcba3"}},"kind":"Move"}}}],"terminator":{"kind":"Goto","pos":"test.rs:3:5: 5:6 !test.rs:3:5: 5:6","target":"bb2"}},"blockid":"bb1"},{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::Ref::47d2d4ffad31de71"}},"pos":"test.rs:3:14: 3:19 !test.rs:3:14: 3:19","rhs":{"borrowkind":"Mut","kind":"Ref","refvar":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::Adt::a72d82d5b19bcba3"}},"region":"unimplement"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Ref::47d2d4ffad31de71"}},"pos":"test.rs:3:14: 3:19 !test.rs:3:14: 3:19","rhs":{"borrowkind":"Mut","kind":"Ref","refvar":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::Ref::47d2d4ffad31de71"}},"region":"unimplement"}}],"terminator":{"args":[{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Ref::47d2d4ffad31de71"}},"kind":"Move"}],"cleanup":null,"destination":[{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::Adt::ba42a94c73933868"}},"bb3"],"from_hir_call":true,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::32ab0f1b9a3a7510"},"kind":"Constant"},"kind":"Call","pos":"test.rs:3:14: 3:19 !test.rs:3:14: 3:19"}},"blockid":"bb2"},{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::isize"}},"pos":"test.rs:3:14: 3:19 !test.rs:3:14: 3:19","rhs":{"kind":"Discriminant","ty":"ty::isize","val":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::Adt::ba42a94c73933868"}}}}],"terminator":{"discr":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::isize"}},"kind":"Move"},"discr_span":"test.rs:3:5: 5:6 !test.rs:3:5: 5:6","kind":"SwitchInt","pos":"test.rs:3:14: 3:19 !test.rs:3:14: 3:19","switch_ty":"ty::isize","targets":["bb6","bb4","bb5"],"values":["0","1"]}},"blockid":"bb3"},{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_10","ty":"ty::usize"}},"pos":"test.rs:3:9: 3:10","rhs":{"kind":"Use","usevar":{"data":{"data":[{"kind":"Downcast","variant":1},{"field":0,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::Adt::ba42a94c73933868"}},"kind":"Copy"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_13","ty":"ty::usize"}},"pos":"test.rs:4:17: 4:18","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_10","ty":"ty::usize"}},"kind":"Copy"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_14","ty":"ty::usize"}},"pos":"test.rs:4:15: 4:19","rhs":{"kind":"Use","usevar":{"data":{"rendered":{"kind":"usize","size":8,"val":"32"},"ty":"ty::usize"},"kind":"Constant"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_15","ty":"ty::bool"}},"pos":"test.rs:4:15: 4:19","rhs":{"L":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_13","ty":"ty::usize"}},"kind":"Copy"},"R":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_14","ty":"ty::usize"}},"kind":"Copy"},"kind":"BinaryOp","op":{"kind":"Lt"}}}],"terminator":{"cleanup":null,"cond":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_15","ty":"ty::bool"}},"kind":"Move"},"expected":true,"kind":"Assert","msg":"index out of bounds: the length is move _14 but the index is _13","pos":"test.rs:4:15: 4:19","target":"bb7"}},"blockid":"bb4"},{"block":{"data":[],"terminator":{"kind":"Unreachable","pos":"test.rs:3:14: 3:19 !test.rs:3:14: 3:19"}},"blockid":"bb5"},{"block":{"data":[],"terminator":{"kind":"Return","pos":"test.rs:7:2: 7:2"}},"blockid":"bb6"},{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_12","ty":"ty::u16"}},"pos":"test.rs:4:15: 4:19","rhs":{"kind":"Use","usevar":{"data":{"data":[{"kind":"Index","op":{"is_zst":false,"mut":{"kind":"Not"},"name":"_13","ty":"ty::usize"}}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Array::6ce3c3db7eed808e"}},"kind":"Copy"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_17","ty":"ty::usize"}},"pos":"test.rs:4:25: 4:26","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_10","ty":"ty::usize"}},"kind":"Copy"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_18","ty":"ty::usize"}},"pos":"test.rs:4:23: 4:27","rhs":{"kind":"Use","usevar":{"data":{"rendered":{"kind":"usize","size":8,"val":"32"},"ty":"ty::usize"},"kind":"Constant"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_19","ty":"ty::bool"}},"pos":"test.rs:4:23: 4:27","rhs":{"L":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_17","ty":"ty::usize"}},"kind":"Copy"},"R":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_18","ty":"ty::usize"}},"kind":"Copy"},"kind":"BinaryOp","op":{"kind":"Lt"}}}],"terminator":{"cleanup":null,"cond":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_19","ty":"ty::bool"}},"kind":"Move"},"expected":true,"kind":"Assert","msg":"index out of bounds: the length is move _18 but the index is _17","pos":"test.rs:4:23: 4:27","target":"bb8"}},"blockid":"bb7"},{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_16","ty":"ty::u16"}},"pos":"test.rs:4:23: 4:27","rhs":{"kind":"Use","usevar":{"data":{"data":[{"kind":"Index","op":{"is_zst":false,"mut":{"kind":"Not"},"name":"_17","ty":"ty::usize"}}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::Array::6ce3c3db7eed808e"}},"kind":"Copy"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::bool"}},"pos":"test.rs:4:15: 4:27","rhs":{"L":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_12","ty":"ty::u16"}},"kind":"Move"},"R":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_16","ty":"ty::u16"}},"kind":"Move"},"kind":"BinaryOp","op":{"kind":"Eq"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::bool"}},"pos":"test.rs:4:9: 4:27","rhs":{"L":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::bool"}},"kind":"Copy"},"R":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::bool"}},"kind":"Move"},"kind":"BinaryOp","op":{"kind":"BitAnd"}}}],"terminator":{"kind":"Goto","pos":"test.rs:3:5: 5:6 !test.rs:3:5: 5:6","target":"bb2"}},"blockid":"bb8"}],"vars":[{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::bool"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::Adt::a72d82d5b19bcba3"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Adt::a72d82d5b19bcba3"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::Adt::a72d82d5b19bcba3"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::Adt::ba42a94c73933868"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Ref::47d2d4ffad31de71"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::Ref::47d2d4ffad31de71"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::isize"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_10","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::bool"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_12","ty":"ty::u16"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_13","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_14","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_15","ty":"ty::bool"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_16","ty":"ty::u16"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_17","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_18","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_19","ty":"ty::bool"}]},"name":"test/82f44efa::f","return_ty":"ty::bool","spread_arg":null},{"abi":{"kind":"Rust"},"args":[{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Adt::a72d82d5b19bcba3"}],"body":{"blocks":[{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::Adt::a72d82d5b19bcba3"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/collect.rs:273:9: 273:13","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Adt::a72d82d5b19bcba3"}},"kind":"Move"}}}],"terminator":{"kind":"Return","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/collect.rs:274:6: 274:6"}},"blockid":"bb0"}],"vars":[{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::Adt::a72d82d5b19bcba3"}]},"name":"core/73237d41::iter::traits::collect::{impl#0}::into_iter::_instf3917be127df4660[0]","return_ty":"ty::Adt::a72d82d5b19bcba3","spread_arg":null},{"abi":{"kind":"Rust"},"args":[{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::47d2d4ffad31de71"}],"body":{"blocks":[{"block":{"data":[{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:711:9: 711:25","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::Ref::47d2d4ffad31de71"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::Ref::47d2d4ffad31de71"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:711:9: 711:25","rhs":{"borrowkind":"Mut","kind":"Ref","refvar":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::47d2d4ffad31de71"}},"region":"unimplement"}}],"terminator":{"args":[{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::Ref::47d2d4ffad31de71"}},"kind":"Move"}],"cleanup":null,"destination":[{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::Adt::ba42a94c73933868"}},"bb1"],"from_hir_call":true,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::a813e7db76b122c1"},"kind":"Constant"},"kind":"Call","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:711:9: 711:25"}},"blockid":"bb0"},{"block":{"data":[{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:711:24: 711:25","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::Ref::47d2d4ffad31de71"}}],"terminator":{"kind":"Return","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:712:6: 712:6"}},"blockid":"bb1"}],"vars":[{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::Adt::ba42a94c73933868"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::Ref::47d2d4ffad31de71"}]},"name":"core/73237d41::iter::range::{impl#3}::next::_instaffa7a8b1157c078[0]","return_ty":"ty::Adt::ba42a94c73933868","spread_arg":null},{"abi":{"kind":"Rust"},"args":[{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::47d2d4ffad31de71"}],"body":{"blocks":[{"block":{"data":[{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:33 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:33","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::bool"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:22","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::Ref::22b22fa7da9e3b39"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::Ref::22b22fa7da9e3b39"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:22","rhs":{"borrowkind":"Shared","kind":"Ref","refvar":{"data":[{"kind":"Deref"},{"field":0,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::47d2d4ffad31de71"}},"region":"unimplement"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:25: 621:33","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Ref::22b22fa7da9e3b39"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Ref::22b22fa7da9e3b39"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:25: 621:33","rhs":{"borrowkind":"Shared","kind":"Ref","refvar":{"data":[{"kind":"Deref"},{"field":1,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::47d2d4ffad31de71"}},"region":"unimplement"}}],"terminator":{"args":[{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::Ref::22b22fa7da9e3b39"}},"kind":"Move"},{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Ref::22b22fa7da9e3b39"}},"kind":"Move"}],"cleanup":null,"destination":[{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::bool"}},"bb1"],"from_hir_call":false,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::f742a45aaa64a3b7"},"kind":"Constant"},"kind":"Call","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:33"}},"blockid":"bb0"},{"block":{"data":[{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:32: 621:33","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Ref::22b22fa7da9e3b39"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:32: 621:33","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::Ref::22b22fa7da9e3b39"}}],"terminator":{"discr":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::bool"}},"kind":"Move"},"discr_span":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:33 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:33","kind":"SwitchInt","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:33 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:12: 621:33","switch_ty":"ty::bool","targets":["bb6","bb2"],"values":["0"]}},"blockid":"bb1"},{"block":{"data":[{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:623:17: 623:18","slvar":{"is_zst":false,"mut":{"kind":"Not"},"name":"_5","ty":"ty::usize"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:623:54: 623:72","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:623:54: 623:72","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Ref::22b22fa7da9e3b39"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Ref::22b22fa7da9e3b39"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:623:54: 623:72","rhs":{"borrowkind":"Shared","kind":"Ref","refvar":{"data":[{"kind":"Deref"},{"field":0,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::47d2d4ffad31de71"}},"region":"unimplement"}}],"terminator":{"args":[{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Ref::22b22fa7da9e3b39"}},"kind":"Move"}],"cleanup":null,"destination":[{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}},"bb3"],"from_hir_call":true,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::83087ab83a258d26"},"kind":"Constant"},"kind":"Call","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:623:54: 623:72"}},"blockid":"bb2"},{"block":{"data":[{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:623:71: 623:72","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Ref::22b22fa7da9e3b39"}}],"terminator":{"args":[{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}},"kind":"Move"},{"data":{"rendered":{"kind":"usize","size":8,"val":"1"},"ty":"ty::usize"},"kind":"Constant"}],"cleanup":null,"destination":[{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_5","ty":"ty::usize"}},"bb4"],"from_hir_call":true,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::748e1fedd0c5e12e"},"kind":"Constant"},"kind":"Call","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:623:30: 623:76"}},"blockid":"bb3"},{"block":{"data":[{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:623:75: 623:76","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:18: 624:50","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::usize"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:31: 624:46","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::Ref::432add1eaefd4b90"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:31: 624:46","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::432add1eaefd4b90"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::432add1eaefd4b90"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:31: 624:46","rhs":{"borrowkind":"Mut","kind":"Ref","refvar":{"data":[{"kind":"Deref"},{"field":0,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::47d2d4ffad31de71"}},"region":"unimplement"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::Ref::432add1eaefd4b90"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:31: 624:46","rhs":{"borrowkind":"Mut","kind":"Ref","refvar":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::432add1eaefd4b90"}},"region":"unimplement"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:48: 624:49","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::usize"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:48: 624:49","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_5","ty":"ty::usize"}},"kind":"Move"}}}],"terminator":{"args":[{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::Ref::432add1eaefd4b90"}},"kind":"Move"},{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::usize"}},"kind":"Move"}],"cleanup":null,"destination":[{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::usize"}},"bb5"],"from_hir_call":true,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::d3f7497d30f5d721"},"kind":"Constant"},"kind":"Call","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:18: 624:50"}},"blockid":"bb4"},{"block":{"data":[{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:49: 624:50","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::usize"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:49: 624:50","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::Ref::432add1eaefd4b90"}},{"kind":"Deinit","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:13: 624:51"},{"kind":"Assign","lhs":{"data":[{"kind":"Downcast","variant":1},{"field":0,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::Adt::ba42a94c73933868"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:13: 624:51","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::usize"}},"kind":"Move"}}},{"kind":"SetDiscriminant","lvalue":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::Adt::ba42a94c73933868"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:13: 624:51","variant_index":1},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:624:50: 624:51","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::usize"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:625:9: 625:10","sdvar":{"is_zst":false,"mut":{"kind":"Not"},"name":"_5","ty":"ty::usize"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:625:9: 625:10","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::432add1eaefd4b90"}}],"terminator":{"kind":"Goto","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:9: 627:10","target":"bb7"}},"blockid":"bb5"},{"block":{"data":[{"kind":"Deinit","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:626:13: 626:17"},{"kind":"SetDiscriminant","lvalue":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::Adt::ba42a94c73933868"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:626:13: 626:17","variant_index":0}],"terminator":{"kind":"Goto","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:621:9: 627:10","target":"bb7"}},"blockid":"bb6"},{"block":{"data":[{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:627:9: 627:10","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::bool"}}],"terminator":{"kind":"Return","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:628:6: 628:6"}},"blockid":"bb7"}],"vars":[{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::Adt::ba42a94c73933868"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_2","ty":"ty::bool"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::Ref::22b22fa7da9e3b39"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::Ref::22b22fa7da9e3b39"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_5","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Ref::22b22fa7da9e3b39"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::Ref::432add1eaefd4b90"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::432add1eaefd4b90"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::usize"}]},"name":"core/73237d41::iter::range::{impl#2}::spec_next::_instaffa7a8b1157c078[0]","return_ty":"ty::Adt::ba42a94c73933868","spread_arg":null},{"abi":{"kind":"Rust"},"args":[{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::22b22fa7da9e3b39"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::Ref::22b22fa7da9e3b39"}],"body":{"blocks":[{"block":{"data":[{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1441:52: 1441:59 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1492:5: 1492:75","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1441:52: 1441:59 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1492:5: 1492:75","rhs":{"kind":"Use","usevar":{"data":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::22b22fa7da9e3b39"}},"kind":"Copy"}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1441:62: 1441:70 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1492:5: 1492:75","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1441:62: 1441:70 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1492:5: 1492:75","rhs":{"kind":"Use","usevar":{"data":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::Ref::22b22fa7da9e3b39"}},"kind":"Copy"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::bool"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1441:52: 1441:70 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1492:5: 1492:75","rhs":{"L":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"}},"kind":"Move"},"R":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}},"kind":"Move"},"kind":"BinaryOp","op":{"kind":"Lt"}}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1441:69: 1441:70 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1492:5: 1492:75","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1441:69: 1441:70 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1492:5: 1492:75","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"}}],"terminator":{"kind":"Return","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1441:72: 1441:72 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:1492:5: 1492:75"}},"blockid":"bb0"}],"vars":[{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::bool"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}]},"name":"core/73237d41::cmp::impls::{impl#54}::lt","return_ty":"ty::bool","spread_arg":null},{"abi":{"kind":"Rust"},"args":[{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::22b22fa7da9e3b39"}],"body":{"blocks":[{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs:189:25: 189:30 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs:196:5: 201:6","rhs":{"kind":"Use","usevar":{"data":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::22b22fa7da9e3b39"}},"kind":"Copy"}}}],"terminator":{"kind":"Return","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs:190:22: 190:22 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs:196:5: 201:6"}},"blockid":"bb0"}],"vars":[{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::usize"}]},"name":"core/73237d41::clone::impls::{impl#5}::clone","return_ty":"ty::usize","spread_arg":null},{"abi":{"kind":"Rust"},"args":[{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::432add1eaefd4b90"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::usize"}],"body":{"blocks":[{"block":{"data":[{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::bool"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:13: 910:19","rhs":{"kind":"Use","usevar":{"data":{"rendered":{"kind":"bool","size":1,"val":"1"},"ty":"ty::bool"},"kind":"Constant"}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:32: 910:36","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::RawPtr::7811620b15571217"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::RawPtr::7811620b15571217"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:32: 910:36","rhs":{"kind":"AddressOf","mutbl":{"kind":"Not"},"place":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::432add1eaefd4b90"}}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_12","ty":"ty::RawPtr::7811620b15571217"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1145:9: 1145:16 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Adt::0241512e4b73c18a"}},{"kind":"Deinit","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:314:9: 314:35 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37"},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:29: 1157:32 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::RawPtr::7811620b15571217"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::RawPtr::7811620b15571217"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:29: 1157:32 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::RawPtr::7811620b15571217"}},"kind":"Copy"}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:34: 1157:50 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::RawPtr::254c966e3bde7fd8"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:34: 1157:50 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::4efaad08d515efe0"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::4efaad08d515efe0"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:34: 1157:50 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","rhs":{"borrowkind":"Mut","kind":"Ref","refvar":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Adt::0241512e4b73c18a"}},"region":"unimplement"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:569:9: 569:23 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_13","ty":"ty::RawPtr::8230a72b78c65fcc"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:569:9: 569:23 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_14","ty":"ty::RawPtr::8230a72b78c65fcc"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_14","ty":"ty::RawPtr::8230a72b78c65fcc"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:569:9: 569:13 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","rhs":{"kind":"AddressOf","mutbl":{"kind":"Mut"},"place":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::4efaad08d515efe0"}}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_13","ty":"ty::RawPtr::8230a72b78c65fcc"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:569:9: 569:23 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_14","ty":"ty::RawPtr::8230a72b78c65fcc"}},"kind":"Copy"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::RawPtr::254c966e3bde7fd8"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:569:9: 569:33 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","rhs":{"kind":"Cast","op":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_13","ty":"ty::RawPtr::8230a72b78c65fcc"}},"kind":"Move"},"ty":"ty::RawPtr::254c966e3bde7fd8","type":{"kind":"PtrToPtr"}}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:569:32: 569:33 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_13","ty":"ty::RawPtr::8230a72b78c65fcc"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:570:5: 570:6 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_14","ty":"ty::RawPtr::8230a72b78c65fcc"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:49: 1157:50 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::4efaad08d515efe0"}},{"count":{"data":{"rendered":{"kind":"usize","size":8,"val":"1"},"ty":"ty::usize"},"kind":"Constant"},"dst":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::RawPtr::254c966e3bde7fd8"}},"kind":"Move"},"intrinsic_kind":"CopyNonOverlapping","kind":"Intrinsic","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:9: 1157:54 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","src":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::RawPtr::7811620b15571217"}},"kind":"Move"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:53: 1157:54 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::RawPtr::254c966e3bde7fd8"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1157:53: 1157:54 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::RawPtr::7811620b15571217"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1158:9: 1158:12 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::Adt::0241512e4b73c18a"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::Adt::0241512e4b73c18a"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1158:9: 1158:12 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Adt::0241512e4b73c18a"}},"kind":"Move"}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:626:13: 626:48 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":true,"mut":{"kind":"Not"},"name":"_15","ty":"ty::Tuple::e93222e871854c41"}}],"terminator":{"args":[],"cleanup":"bb3","destination":[{"data":[],"var":{"is_zst":true,"mut":{"kind":"Not"},"name":"_15","ty":"ty::Tuple::e93222e871854c41"}},"bb4"],"from_hir_call":true,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::4dce31ae7c5f0a42"},"kind":"Constant"},"kind":"Call","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:626:13: 626:48 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37"}},"blockid":"bb0"},{"block":{"data":[],"terminator":{"kind":"Resume","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:905:1: 914:2"}},"blockid":"bb1"},{"block":{"data":[],"terminator":{"drop_fn":null,"kind":"Drop","location":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:914:1: 914:2","target":"bb1","unwind":null}},"blockid":"bb2"},{"block":{"data":[],"terminator":{"discr":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::bool"}},"kind":"Copy"},"discr_span":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:914:1: 914:2","kind":"SwitchInt","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:914:1: 914:2","switch_ty":"ty::bool","targets":["bb1","bb2"],"values":["0"]}},"blockid":"bb3"},{"block":{"data":[{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:626:48: 626:49 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":true,"mut":{"kind":"Not"},"name":"_15","ty":"ty::Tuple::e93222e871854c41"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:627:38: 627:48 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_16","ty":"ty::Adt::bb3f04b3dd077ac3"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_16","ty":"ty::Adt::bb3f04b3dd077ac3"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:627:38: 627:48 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","rhs":{"kind":"Use","usevar":{"data":{"data":[{"field":1,"kind":"Field","ty":"ty::Adt::bb3f04b3dd077ac3"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::Adt::0241512e4b73c18a"}},"kind":"Move"}}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/manually_drop.rs:89:9: 89:19 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","rhs":{"kind":"Use","usevar":{"data":{"data":[{"field":0,"kind":"Field","ty":"ty::usize"}],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_16","ty":"ty::Adt::bb3f04b3dd077ac3"}},"kind":"Move"}}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs:627:48: 627:49 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_16","ty":"ty::Adt::bb3f04b3dd077ac3"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1158:25: 1158:26 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::Adt::0241512e4b73c18a"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1160:1: 1160:2 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Adt::0241512e4b73c18a"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:22: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_12","ty":"ty::RawPtr::7811620b15571217"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:910:36: 910:37","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::RawPtr::7811620b15571217"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:20: 911:24","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::RawPtr::254c966e3bde7fd8"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::RawPtr::254c966e3bde7fd8"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:20: 911:24","rhs":{"kind":"AddressOf","mutbl":{"kind":"Mut"},"place":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::Ref::432add1eaefd4b90"}}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:26: 911:29","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:26: 911:29","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::usize"}},"kind":"Move"}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_20","ty":"ty::RawPtr::254c966e3bde7fd8"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:29: 1354:45 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_17","ty":"ty::RawPtr::7811620b15571217"}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:29: 1354:33 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","slvar":{"is_zst":false,"mut":{"kind":"Not"},"name":"_18","ty":"ty::Ref::22b22fa7da9e3b39"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_18","ty":"ty::Ref::22b22fa7da9e3b39"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:29: 1354:33 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","rhs":{"borrowkind":"Shared","kind":"Ref","refvar":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"}},"region":"unimplement"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_17","ty":"ty::RawPtr::7811620b15571217"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:29: 1354:33 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","rhs":{"kind":"AddressOf","mutbl":{"kind":"Not"},"place":{"data":[{"kind":"Deref"}],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_18","ty":"ty::Ref::22b22fa7da9e3b39"}}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:47: 1354:50 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_19","ty":"ty::RawPtr::254c966e3bde7fd8"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_19","ty":"ty::RawPtr::254c966e3bde7fd8"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:47: 1354:50 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::RawPtr::254c966e3bde7fd8"}},"kind":"Copy"}}},{"count":{"data":{"rendered":{"kind":"usize","size":8,"val":"1"},"ty":"ty::usize"},"kind":"Constant"},"dst":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_19","ty":"ty::RawPtr::254c966e3bde7fd8"}},"kind":"Move"},"intrinsic_kind":"CopyNonOverlapping","kind":"Intrinsic","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:9: 1354:54 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","src":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_17","ty":"ty::RawPtr::7811620b15571217"}},"kind":"Move"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:53: 1354:54 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_19","ty":"ty::RawPtr::254c966e3bde7fd8"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:53: 1354:54 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_17","ty":"ty::RawPtr::7811620b15571217"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1354:54: 1354:55 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","sdvar":{"is_zst":false,"mut":{"kind":"Not"},"name":"_18","ty":"ty::Ref::22b22fa7da9e3b39"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:9: 911:30","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_20","ty":"ty::RawPtr::254c966e3bde7fd8"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:29: 911:30","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:911:29: 911:30","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::RawPtr::254c966e3bde7fd8"}}],"terminator":{"kind":"Return","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:914:2: 914:2"}},"blockid":"bb4"}],"vars":[{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::RawPtr::7811620b15571217"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::RawPtr::254c966e3bde7fd8"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::bool"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_7","ty":"ty::Adt::0241512e4b73c18a"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_8","ty":"ty::RawPtr::7811620b15571217"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_9","ty":"ty::RawPtr::254c966e3bde7fd8"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_10","ty":"ty::Ref::4efaad08d515efe0"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_11","ty":"ty::Adt::0241512e4b73c18a"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_12","ty":"ty::RawPtr::7811620b15571217"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_13","ty":"ty::RawPtr::8230a72b78c65fcc"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_14","ty":"ty::RawPtr::8230a72b78c65fcc"},{"is_zst":true,"mut":{"kind":"Not"},"name":"_15","ty":"ty::Tuple::e93222e871854c41"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_16","ty":"ty::Adt::bb3f04b3dd077ac3"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_17","ty":"ty::RawPtr::7811620b15571217"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_18","ty":"ty::Ref::22b22fa7da9e3b39"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_19","ty":"ty::RawPtr::254c966e3bde7fd8"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_20","ty":"ty::RawPtr::254c966e3bde7fd8"}]},"name":"core/73237d41::mem::replace::_instaffa7a8b1157c078[0]","return_ty":"ty::usize","spread_arg":null},{"abi":{"kind":"Rust"},"args":[{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::usize"}],"body":{"blocks":[{"block":{"data":[{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:191:22: 191:27 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:191:22: 191:27 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_1","ty":"ty::usize"}},"kind":"Copy"}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:191:42: 191:51 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:191:42: 191:43 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Not"},"name":"_2","ty":"ty::usize"}},"kind":"Copy"}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:470:48: 470:52 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:470:48: 470:52 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"}},"kind":"Copy"}}},{"kind":"StorageLive","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:470:54: 470:57 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","slvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}},{"kind":"Assign","lhs":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}},"pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:470:54: 470:57 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","rhs":{"kind":"Use","usevar":{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}},"kind":"Copy"}}}],"terminator":{"args":[{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"}},"kind":"Move"},{"data":{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}},"kind":"Move"}],"cleanup":null,"destination":[{"data":[],"var":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::usize"}},"bb1"],"from_hir_call":true,"func":{"data":{"rendered":{"kind":"zst"},"ty":"ty::FnDef::ab0646f8088f1910"},"kind":"Constant"},"kind":"Call","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:470:22: 470:58 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2"}},"blockid":"bb0"},{"block":{"data":[{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:470:57: 470:58 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:470:57: 470:58 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:191:51: 191:52 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"}},{"kind":"StorageDead","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:191:51: 191:52 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2","sdvar":{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"}}],"terminator":{"kind":"Return","pos":"/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:192:10: 192:10 !/home/ryanscott/.rustup/toolchains/nightly-2023-01-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/range.rs:391:1: 394:2"}},"blockid":"bb1"}],"vars":[{"is_zst":false,"mut":{"kind":"Mut"},"name":"_0","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_3","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_4","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_5","ty":"ty::usize"},{"is_zst":false,"mut":{"kind":"Mut"},"name":"_6","ty":"ty::usize"}]},"name":"core/73237d41::iter::range::{impl#37}::forward_unchecked","return_ty":"ty::usize","spread_arg":null}],"adts":[{"kind":{"discr_ty":"ty::isize","kind":"Enum"},"name":"core/73237d41::option::Option::_adtaffa7a8b1157c078[0]","orig_def_id":"core/73237d41::option::Option","orig_substs":["ty::usize"],"repr_transparent":false,"size":16,"variants":[{"ctor_kind":{"kind":"Const"},"discr":{"index":0,"kind":"Relative"},"discr_value":"0","fields":[],"inhabited":true,"name":"core/73237d41::option::Option::None"},{"ctor_kind":{"kind":"Fn"},"discr":{"index":1,"kind":"Relative"},"discr_value":"1","fields":[{"name":"core/73237d41::option::Option::Some::0","ty":"ty::usize"}],"inhabited":true,"name":"core/73237d41::option::Option::Some"}]},{"kind":{"kind":"Struct"},"name":"core/73237d41::ops::range::Range::_adtaffa7a8b1157c078[0]","orig_def_id":"core/73237d41::ops::range::Range","orig_substs":["ty::usize"],"repr_transparent":false,"size":16,"variants":[{"ctor_kind":null,"discr":{"index":0,"kind":"Relative"},"discr_value":null,"fields":[{"name":"core/73237d41::ops::range::Range::start","ty":"ty::usize"},{"name":"core/73237d41::ops::range::Range::end","ty":"ty::usize"}],"inhabited":true,"name":"core/73237d41::ops::range::Range"}]},{"kind":{"kind":"Struct"},"name":"core/73237d41::mem::manually_drop::ManuallyDrop::_adtaffa7a8b1157c078[0]","orig_def_id":"core/73237d41::mem::manually_drop::ManuallyDrop","orig_substs":["ty::usize"],"repr_transparent":true,"size":8,"variants":[{"ctor_kind":null,"discr":{"index":0,"kind":"Relative"},"discr_value":null,"fields":[{"name":"core/73237d41::mem::manually_drop::ManuallyDrop::value","ty":"ty::usize"}],"inhabited":true,"name":"core/73237d41::mem::manually_drop::ManuallyDrop"}]},{"kind":{"kind":"Union"},"name":"core/73237d41::mem::maybe_uninit::MaybeUninit::_adtaffa7a8b1157c078[0]","orig_def_id":"core/73237d41::mem::maybe_uninit::MaybeUninit","orig_substs":["ty::usize"],"repr_transparent":true,"size":8,"variants":[{"ctor_kind":null,"discr":{"index":0,"kind":"Relative"},"discr_value":null,"fields":[{"name":"core/73237d41::mem::maybe_uninit::MaybeUninit::uninit","ty":"ty::Tuple::e93222e871854c41"},{"name":"core/73237d41::mem::maybe_uninit::MaybeUninit::value","ty":"ty::Adt::bb3f04b3dd077ac3"}],"inhabited":true,"name":"core/73237d41::mem::maybe_uninit::MaybeUninit"}]}],"statics":[],"vtables":[],"traits":[],"intrinsics":[{"inst":{"def_id":"test/82f44efa::f","kind":"Item","substs":[]},"name":"test/82f44efa::f"},{"inst":{"def_id":"core/73237d41::iter::traits::collect::{impl#0}::into_iter","kind":"Item","substs":["ty::Adt::a72d82d5b19bcba3"]},"name":"core/73237d41::iter::traits::collect::{impl#0}::into_iter::_instf3917be127df4660[0]"},{"inst":{"def_id":"core/73237d41::iter::range::{impl#3}::next","kind":"Item","substs":["ty::usize"]},"name":"core/73237d41::iter::range::{impl#3}::next::_instaffa7a8b1157c078[0]"},{"inst":{"def_id":"core/73237d41::iter::range::{impl#2}::spec_next","kind":"Item","substs":["ty::usize"]},"name":"core/73237d41::iter::range::{impl#2}::spec_next::_instaffa7a8b1157c078[0]"},{"inst":{"def_id":"core/73237d41::cmp::impls::{impl#54}::lt","kind":"Item","substs":[]},"name":"core/73237d41::cmp::impls::{impl#54}::lt"},{"inst":{"def_id":"core/73237d41::clone::impls::{impl#5}::clone","kind":"Item","substs":[]},"name":"core/73237d41::clone::impls::{impl#5}::clone"},{"inst":{"def_id":"core/73237d41::mem::replace","kind":"Item","substs":["ty::usize"]},"name":"core/73237d41::mem::replace::_instaffa7a8b1157c078[0]"},{"inst":{"def_id":"core/73237d41::iter::range::{impl#37}::forward_unchecked","kind":"Item","substs":[]},"name":"core/73237d41::iter::range::{impl#37}::forward_unchecked"},{"inst":{"def_id":"core/73237d41::intrinsics::{extern#0}::unchecked_add","kind":"Intrinsic","substs":["ty::usize"]},"name":"core/73237d41::intrinsics::{extern#0}::unchecked_add::_instaffa7a8b1157c078[0]"},{"inst":{"def_id":"core/73237d41::intrinsics::{extern#0}::assert_inhabited","kind":"Intrinsic","substs":["ty::usize"]},"name":"core/73237d41::intrinsics::{extern#0}::assert_inhabited::_instaffa7a8b1157c078[0]"}],"tys":[{"name":"ty::u16","ty":{"kind":"Uint","uintkind":{"kind":"U16"}}},{"name":"ty::usize","ty":{"kind":"Uint","uintkind":{"kind":"Usize"}}},{"name":"ty::Array::6ce3c3db7eed808e","ty":{"kind":"Array","size":{"rendered":{"kind":"usize","size":8,"val":"32"},"ty":"ty::usize"},"ty":"ty::u16"}},{"name":"ty::bool","ty":{"kind":"Bool"}},{"name":"ty::Adt::a72d82d5b19bcba3","ty":{"kind":"Adt","name":"core/73237d41::ops::range::Range::_adtaffa7a8b1157c078[0]","orig_def_id":"core/73237d41::ops::range::Range","substs":["ty::usize"]}},{"name":"ty::Adt::ba42a94c73933868","ty":{"kind":"Adt","name":"core/73237d41::option::Option::_adtaffa7a8b1157c078[0]","orig_def_id":"core/73237d41::option::Option","substs":["ty::usize"]}},{"name":"ty::Ref::47d2d4ffad31de71","ty":{"kind":"Ref","mutability":{"kind":"Mut"},"ty":"ty::Adt::a72d82d5b19bcba3"}},{"name":"ty::isize","ty":{"intkind":{"kind":"Isize"},"kind":"Int"}},{"name":"ty::FnDef::66d1aba9f0c3ae7d","ty":{"defid":"core/73237d41::iter::traits::collect::{impl#0}::into_iter::_instf3917be127df4660[0]","kind":"FnDef"}},{"name":"ty::FnDef::32ab0f1b9a3a7510","ty":{"defid":"core/73237d41::iter::range::{impl#3}::next::_instaffa7a8b1157c078[0]","kind":"FnDef"}},{"name":"ty::FnDef::a813e7db76b122c1","ty":{"defid":"core/73237d41::iter::range::{impl#2}::spec_next::_instaffa7a8b1157c078[0]","kind":"FnDef"}},{"name":"ty::Ref::22b22fa7da9e3b39","ty":{"kind":"Ref","mutability":{"kind":"Not"},"ty":"ty::usize"}},{"name":"ty::Ref::432add1eaefd4b90","ty":{"kind":"Ref","mutability":{"kind":"Mut"},"ty":"ty::usize"}},{"name":"ty::FnDef::f742a45aaa64a3b7","ty":{"defid":"core/73237d41::cmp::impls::{impl#54}::lt","kind":"FnDef"}},{"name":"ty::FnDef::83087ab83a258d26","ty":{"defid":"core/73237d41::clone::impls::{impl#5}::clone","kind":"FnDef"}},{"name":"ty::FnDef::748e1fedd0c5e12e","ty":{"defid":"core/73237d41::iter::range::{impl#37}::forward_unchecked","kind":"FnDef"}},{"name":"ty::FnDef::d3f7497d30f5d721","ty":{"defid":"core/73237d41::mem::replace::_instaffa7a8b1157c078[0]","kind":"FnDef"}},{"name":"ty::RawPtr::7811620b15571217","ty":{"kind":"RawPtr","mutability":{"kind":"Not"},"ty":"ty::usize"}},{"name":"ty::RawPtr::254c966e3bde7fd8","ty":{"kind":"RawPtr","mutability":{"kind":"Mut"},"ty":"ty::usize"}},{"name":"ty::Adt::0241512e4b73c18a","ty":{"kind":"Adt","name":"core/73237d41::mem::maybe_uninit::MaybeUninit::_adtaffa7a8b1157c078[0]","orig_def_id":"core/73237d41::mem::maybe_uninit::MaybeUninit","substs":["ty::usize"]}},{"name":"ty::Ref::4efaad08d515efe0","ty":{"kind":"Ref","mutability":{"kind":"Mut"},"ty":"ty::Adt::0241512e4b73c18a"}},{"name":"ty::RawPtr::8230a72b78c65fcc","ty":{"kind":"RawPtr","mutability":{"kind":"Mut"},"ty":"ty::Adt::0241512e4b73c18a"}},{"name":"ty::Tuple::e93222e871854c41","ty":{"kind":"Tuple","tys":[]}},{"name":"ty::Adt::bb3f04b3dd077ac3","ty":{"kind":"Adt","name":"core/73237d41::mem::manually_drop::ManuallyDrop::_adtaffa7a8b1157c078[0]","orig_def_id":"core/73237d41::mem::manually_drop::ManuallyDrop","substs":["ty::usize"]}},{"name":"ty::FnDef::4dce31ae7c5f0a42","ty":{"defid":"core/73237d41::intrinsics::{extern#0}::assert_inhabited::_instaffa7a8b1157c078[0]","kind":"FnDef"}},{"name":"ty::FnDef::ab0646f8088f1910","ty":{"defid":"core/73237d41::intrinsics::{extern#0}::unchecked_add::_instaffa7a8b1157c078[0]","kind":"FnDef"}}],"roots":["test/82f44efa::f"]} \ No newline at end of file diff --git a/intTests/test1998_mir/test.rs b/intTests/test1998_mir/test.rs new file mode 100644 index 0000000000..37ff6a68aa --- /dev/null +++ b/intTests/test1998_mir/test.rs @@ -0,0 +1,7 @@ +pub fn f(x: [u16; 32], y: [u16; 32]) -> bool { + let mut eq: bool = true; + for i in 0..32 { + eq &= x[i] == y[i]; + } + eq +} diff --git a/intTests/test1998_mir/test.saw b/intTests/test1998_mir/test.saw new file mode 100644 index 0000000000..bfc6af463d --- /dev/null +++ b/intTests/test1998_mir/test.saw @@ -0,0 +1,14 @@ +enable_experimental; + +let f_spec = do { + x <- mir_fresh_expanded_value "x" (mir_array 32 mir_u16); + y <- mir_fresh_expanded_value "y" (mir_array 32 mir_u16); + mir_equal x y; + + mir_execute_func [x, y]; + + mir_return (mir_term {{ True }}); +}; + +m <- mir_load_module "test.linked-mir.json"; +mir_verify m "test::f" [] false f_spec z3; diff --git a/intTests/test1998_mir/test.sh b/intTests/test1998_mir/test.sh new file mode 100755 index 0000000000..0b864017cd --- /dev/null +++ b/intTests/test1998_mir/test.sh @@ -0,0 +1 @@ +$SAW test.saw diff --git a/src/SAWScript/Crucible/Common/Setup/Builtins.hs b/src/SAWScript/Crucible/Common/Setup/Builtins.hs index 52151c4f59..504186093f 100644 --- a/src/SAWScript/Crucible/Common/Setup/Builtins.hs +++ b/src/SAWScript/Crucible/Common/Setup/Builtins.hs @@ -9,7 +9,14 @@ Stability : provisional {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE ParallelListComp #-} -module SAWScript.Crucible.Common.Setup.Builtins where +module SAWScript.Crucible.Common.Setup.Builtins + ( crucible_precond + , crucible_postcond + , crucible_return + , crucible_execute_func + , crucible_equal + , CheckPointsToType(..) + ) where import Control.Lens import Control.Monad (when) @@ -85,6 +92,21 @@ crucible_execute_func args = do | t <- tps ] +crucible_equal :: + W4.ProgramLoc -> + MS.SetupValue ext -> + MS.SetupValue ext -> + CrucibleSetup ext () +crucible_equal loc val1 val2 = do + tags <- view croTags + let md = MS.ConditionMetadata + { MS.conditionLoc = loc + , MS.conditionTags = tags + , MS.conditionType = "equality specification" + , MS.conditionContext = "" + } + addCondition (MS.SetupCond_Equal md val1 val2) + -------------------------------------------------------------------------------- -- ** Shared data types diff --git a/src/SAWScript/Crucible/JVM/Builtins.hs b/src/SAWScript/Crucible/JVM/Builtins.hs index 725bec05b5..91ec668b0b 100644 --- a/src/SAWScript/Crucible/JVM/Builtins.hs +++ b/src/SAWScript/Crucible/JVM/Builtins.hs @@ -45,6 +45,7 @@ module SAWScript.Crucible.JVM.Builtins , jvm_alloc_array , jvm_setup_with_tag , jvm_ghost_value + , jvm_equal ) where import Control.Lens @@ -1449,6 +1450,25 @@ jvm_ghost_value :: jvm_ghost_value ghost val = JVMSetupM $ ghost_value ghost val +jvm_equal :: SetupValue -> SetupValue -> JVMSetupM () +jvm_equal val1 val2 = + JVMSetupM $ + do loc <- getW4Position "jvm_equal" + st <- get + let cc = st ^. Setup.csCrucibleContext + env = MS.csAllocations (st ^. Setup.csMethodSpec) + nameEnv = MS.csTypeNames (st ^. Setup.csMethodSpec) + ty1 <- typeOfSetupValue cc env nameEnv val1 + ty2 <- typeOfSetupValue cc env nameEnv val2 + + let b = registerCompatible ty1 ty2 + unless b $ throwCrucibleSetup loc $ unlines + [ "Incompatible types when asserting equality:" + , show ty1 + , show ty2 + ] + Setup.crucible_equal loc val1 val2 + -------------------------------------------------------------------------------- -- | Sort a list of things and group them into equivalence classes. diff --git a/src/SAWScript/Crucible/LLVM/Builtins.hs b/src/SAWScript/Crucible/LLVM/Builtins.hs index de9598545f..402585cdca 100644 --- a/src/SAWScript/Crucible/LLVM/Builtins.hs +++ b/src/SAWScript/Crucible/LLVM/Builtins.hs @@ -2824,14 +2824,7 @@ llvm_equal (getAllLLVM -> val1) (getAllLLVM -> val2) = , show ty1 , show ty2 ] - tags <- view Setup.croTags - let md = MS.ConditionMetadata - { MS.conditionLoc = loc - , MS.conditionTags = tags - , MS.conditionType = "equality specification" - , MS.conditionContext = "" - } - Setup.addCondition (MS.SetupCond_Equal md val1 val2) + Setup.crucible_equal loc val1 val2 llvm_ghost_value :: MS.GhostGlobal -> diff --git a/src/SAWScript/Crucible/MIR/Builtins.hs b/src/SAWScript/Crucible/MIR/Builtins.hs index e38ea187a9..680ab24fe7 100644 --- a/src/SAWScript/Crucible/MIR/Builtins.hs +++ b/src/SAWScript/Crucible/MIR/Builtins.hs @@ -14,6 +14,7 @@ module SAWScript.Crucible.MIR.Builtins , mir_alloc_mut , mir_assert , mir_execute_func + , mir_equal , mir_find_adt , mir_fresh_cryptol_var , mir_fresh_expanded_value @@ -237,6 +238,25 @@ mir_execute_func args = checkArgs 0 argTys args Setup.crucible_execute_func args +mir_equal :: SetupValue -> SetupValue -> MIRSetupM () +mir_equal val1 val2 = + MIRSetupM $ + do cc <- getMIRCrucibleContext + loc <- getW4Position "mir_equal" + st <- get + let env = MS.csAllocations (st ^. Setup.csMethodSpec) + nameEnv = MS.csTypeNames (st ^. Setup.csMethodSpec) + ty1 <- typeOfSetupValue cc env nameEnv val1 + ty2 <- typeOfSetupValue cc env nameEnv val2 + + let b = checkCompatibleTys ty1 ty2 + unless b $ throwCrucibleSetup loc $ unlines + [ "Incompatible types when asserting equality:" + , show ty1 + , show ty2 + ] + Setup.crucible_equal loc val1 val2 + -- | Consult the given 'Mir.RustModule' to find an 'Mir.Adt'" with the given -- 'String' as an identifier and the given 'Mir.Ty's as the types used to -- instantiate the type parameters. If such a 'Mir.Adt' cannot be found in the diff --git a/src/SAWScript/Interpreter.hs b/src/SAWScript/Interpreter.hs index ca8ddb55bb..fcc8442d3d 100644 --- a/src/SAWScript/Interpreter.hs +++ b/src/SAWScript/Interpreter.hs @@ -3922,6 +3922,15 @@ primitives = Map.fromList , "method being verified." ] + , prim "jvm_equal" "JVMValue -> JVMValue -> JVMSetup ()" + (pureVal jvm_equal) + Current + [ "State that two JVM values should be equal. Can be used as either a" + , "pre-condition or a post-condition. It is semantically equivalent to" + , "an `jvm_precond` or `jvm_postcond` statement which is an equality" + , "predicate, but potentially more efficient." + ] + , prim "jvm_execute_func" "[JVMValue] -> JVMSetup ()" (pureVal jvm_execute_func) Current @@ -4037,6 +4046,15 @@ primitives = Map.fromList , "String argument represents the variant name." ] + , prim "mir_equal" "MIRValue -> MIRValue -> MIRSetup ()" + (pureVal mir_equal) + Experimental + [ "State that two MIR values should be equal. Can be used as either a" + , "pre-condition or a post-condition. It is semantically equivalent to" + , "an `mir_precond` or `mir_postcond` statement which is an equality" + , "predicate, but potentially more efficient." + ] + , prim "mir_execute_func" "[MIRValue] -> MIRSetup ()" (pureVal mir_execute_func) Experimental